1 条题解

  • 0
    @ 2025-10-8 16:53:54
    #include<bits/stdc++.h>
    using namespace std;
    int a[5][5];
    int s[5],t;bool v[5],bk;
    bool check(int x)//判断预测分数
    {
        int tt=0;
        for(int i=1;i<=4;i++)
            if(s[i]==a[x][i]) tt++;
        return (tt==t);//与题目给出的相同
    }
    void dfs(int x)
    {
        if(bk) return;
        if(x==5)
        {
            if(check(1) and check(2) and check(3) and check(4))
            {
                for(int i=1;i<=4;i++)printf("%d ",s[i]);
                printf("\n");
                bk=1;
            }
        }
    	else
    	{
    	    for(int i=1;i<=4;i++)
    	    {
    	        if(v[i]==0)
    	        {
    	            v[i]=1;
    	            s[x]=i;
    	            dfs(x+1);
    	            v[i]=0;
    	        }
    	    }
    	}	
    }
    int main()
    {
        while(scanf("%d",&a[1][1])!=EOF)
        {
            for(int j=2;j<=4;j++)scanf("%d",&a[1][j]);
            for(int i=2;i<=4;i++) for(int j=1;j<=4;j++) scanf("%d",&a[i][j]); 
            scanf("%d",&t);
            memset(v,0,sizeof(v));
            bk=0;dfs(1);
    	}
    	return 0;
    }
    
    • 1

    信息

    ID
    756
    时间
    1000ms
    内存
    128MiB
    难度
    6
    标签
    递交数
    212
    已通过
    61
    上传者