列挙問題:POJダイヤル問題(バカなやり方)
2507 ワード
列挙問題:POJダイヤル問題(バカなやり方)
/***********
:poj
************/
#include
using namespace std;
int main()
{
int clk[10];
int op[10];
int sum;
for(int i=1;i<=9;i++){
cin >> clk[i];
}
// 9 9 , ,
// , 0 3
for(op[1]=0;op[1]<4;op[1]++){
for(op[2]=0;op[2]<4;op[2]++){
for(op[3]=0;op[3]<4;op[3]++){
for(op[4]=0;op[4]<4;op[4]++){
for(op[5]=0;op[5]<4;op[5]++){
for(op[6]=0;op[6]<4;op[6]++){
for(op[7]=0;op[7]<4;op[7]++){
for(op[8]=0;op[8]<4;op[8]++){
for(op[9]=0;op[9]<4;op[9]++){
// , sum
// sum=0
sum=0;
sum += (clk[1] + op[1] + op[2] + op[4]) % 4; // 1 1 2 4
sum += (clk[2] + op[1] + op[2] + op[3] + op[5]) % 4;
sum += (clk[3] + op[2] + op[3] + op[6]) % 4;
sum += (clk[4] + op[1] + op[4] + op[5] + op[7]) % 4;
sum += (clk[5] + op[1] + op[3] + op[5] + op[7] + op[9]) % 4;
sum += (clk[6] + op[3] + op[5] + op[6] + op[9]) % 4;
sum += (clk[7] + op[4] + op[7] + op[8]) % 4;
sum += (clk[8] + op[5] + op[7] + op[8] + op[9]) % 4;
sum += (clk[9] + op[6] + op[8] + op[9]) % 4;
if(sum==0){
for(int i=1;i<=9;i++){
while(op[i]--){
cout << i << " ";
}
}
return 0;
}
}
}
}
}
}
}
}
}
}
}