社区讨论

进来欣赏一下.............

P2196[NOIP 1996 提高组] 挖地雷参与者 18已保存回复 17

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
17 条
当前快照
1 份
快照标识符
@mi7pmvkl
此快照首次捕获于
2025/11/21 01:33
4 个月前
此快照最后确认于
2025/11/21 01:52
4 个月前
查看原帖
C
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int order[21],/*顺序*/ ja[21],/*地窖所埋地雷 */ pa[21][21];/*路径*/ 
int ord[21];//所求输出路径 
int tot,n,s=2,w=-1,t=2;//记录所扫地雷最大值 
int f;
//bool a[21][21];
//int b[21][21];
void dfs(int x)
{
//	cout<<t;
    
    /*if(i=n+1)
    {
        for(int i=1;i<=n;i++)
        {
            
        }
    }*/
    int m=0;//判断是否还有路径 
    for(int j=1;j<=n;j++)
    {
        if(pa[x][j]==1)
        {
            m=1;
            tot+=ja[j];
            order[t]=j;
            t++;
            dfs(j);
            tot-=ja[j];
            t--;
        //	m=0;
            
        }
    }
    if(m=1)
    {
        
        
       if(tot>w)
       {
       	 w=tot;
       	 f=t;
       	 //cout<<f;
       	 for(int i=1;i<f;i++)
       	 {
       	 	
       	 	ord[i]=order[i];
       	 }
       }	
    }
    
    
}
int main()
{
    memset(ord,0,sizeof(ord));
    memset(order,0,sizeof(order));
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>ja[i];//dilei
    }
    
    for(int i=1;i<=n;i++)
    {
        for(int j=s;j<=n;j++)
        {
            cin>>pa[i][j];
        
        }
        s++;	
    }
/*	for(int i=1;i<=n-1;i++)
    {
        for(int j=f;j<=n;j++)
        cout<<pa[i][j]<<" ";
        cout<<endl;
        f++;
    }*/
    for(int i=1;i<=n;i++)
    {
        tot=ja[i];
        order[1]=i;
        dfs(i);
    }
    
    for(int i=1;i<f;i++)
    {
        cout<<ord[i]<<" ";
        
    }
    cout<<endl;
    cout<<w;
    
    
    
}

回复

17 条回复,欢迎继续交流。

正在加载回复...