1 条题解

  • 0
    @ 2024-12-24 10:06:06

    C :

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int G[25][25];
    int vis[25];
    
    int n, m;
    int flag;
    
    int isok(){
    for(int i = 1;i < n; i++){
        if(vis[i]==0)return 0;
    }
    return 1;
    }
    
    void dfs(int u){
    if(u == n){
        if(isok())flag = 1;
        return;
    }
    if(vis[u]==1)return;
    vis[u] = 1;
    for(int v = 1;v <= n; v++){
        if(vis[v]==0 && G[u][v] == 1){
            dfs(v);
        }
        if(flag)return;
    }
    vis[u] = 0;
    }
    
    int main()
    {
        while(scanf("%d",&n) != EOF){
            scanf("%d",&m);
            memset(G,0,sizeof(G));
            memset(vis,0,sizeof(vis));
            while(m--){
                int a, b;
                scanf("%d%d",&a,&b);
                G[a][b] = G[b][a] = 1;
            }
            flag = 0;
            dfs(1);
            printf("%d\n",flag);
        }
        return 0;
    }
    

    C++ :

    #include <stdio.h>
    
    int n,m,ok,b[22],a[22][22];//a代表各地之间的连接情况,b代表某点是否去过
    
    void find(int last,int t)//搜索,已经走过t个地方,最后处于last
    {
    	int i;
    	if(t==n)
    	{
    		if(last==n)//只有去过n个地方并且最后处于n才是ok的
    			ok=1;
    		return;
    	}
    	for(i=1;i<=n;i++)//搜索下一个要去的地方
    		if(a[i][last]==1&&b[i]==0)//下一个去i
    		{
    			b[i]=1;//标记i已经去过
    			find(i,t+1);//递归
    			if(ok==1)
    				return;
    			b[i]=0;//取消标记
    		}
    }
    
    void run()
    {
    	int i,j,k;
    	for(i=1;i<=n;i++)//重置地图
    		for(j=1;j<=n;j++)
    			a[i][j]=0;
    	for(i=0;i<m;i++)//读取路的信息,写入地图
    	{
    		scanf("%d%d",&j,&k);
    		a[j][k]=1;
    		a[k][j]=1;
    	}
    	for(i=1;i<=n;i++)//所有地方都没去过
    		b[i]=0;
    	ok=0;
    	b[1]=1;//在1出发
    	find(1,1);//已经去过1,最后处于1,开始搜索
    	printf("%d\n",ok);
    }
    
    int main()
    {
    	while(scanf("%d%d",&n,&m)!=EOF)
    		run();
    	return 0;
    } 
    
    
    • 1

    信息

    ID
    1928
    时间
    1000ms
    内存
    32MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者