位运算

 

 
#include<bits/stdc++.h>
using namespace std;
int a[10][10],b[10],x[10];
int main(){
    for(int i=1;i<=6;i++)for(int j=1;j<=6;j++)cin>>a[i][j];
    for(int j=1;j<=6;j++)for(int i=1;i<=6;i++)
        if(a[i][j])b[j]=b[j]|1<<i-1;
    for(x[1]=1;x[1]<=6;x[1]++)
    for(x[2]=1;x[2]<=6;x[2]++)
    for(x[3]=1;x[3]<=6;x[3]++)
    for(x[4]=1;x[4]<=6;x[4]++)
    for(x[5]=1;x[5]<=6;x[5]++)
    for(x[6]=1;x[6]<=6;x[6]++)
        if(x[1]+x[2]+x[3]+x[4]+x[5]+x[6]==21&&x[1]*x[2]*x[3]*x[4]*x[5]*x[6]==720
           &&(b[x[1]]&b[x[2]])==0&&(b[x[2]]&b[x[3]])==0&&(b[x[3]]&b[x[4]])==0
           &&(b[x[4]]&b[x[5]])==0&&(b[x[5]]&b[x[6]])==0)cout<<x[1]<<x[2]<<x[3]<<x[4]<<x[5]<<x[6]<<endl;
    return 0;
}

  



posted @ 2019-06-07 18:52  codeisking  阅读(116)  评论(0)    收藏  举报