#define LOCAL
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
int clk[10];int num[10];
int main()
{
#ifdef LOCAL
freopen("/Users/wangkeyuan/i.txt","r",stdin);
freopen("/Users/wangkeyuan/o.txt","w",stdout);
#endif
for(int i=0;i<9;i++)
cin>>clk[i];
for(int i1=0;i1<4;i1++)
{
for(int i2=0;i2<4;i2++)
{
for(int i3=0;i3<4;i3++)
{
for(int i4=0;i4<4;i4++)
{
for(int i5=0;i5<4;i5++)
{
for(int i6=0;i6<4;i6++)
{
for(int i7=0;i7<4;i7++)
{
for(int i8=0;i8<4;i8++)
{
for(int i9=0;i9<4;i9++)
{
num[0] = (clk[0]+i1+i2+i4)%4;
num[1] = (clk[1]+i1+i2+i3+i5)%4;
num[2] = (clk[2]+i2+i3+i6)%4;
num[3] = (clk[3]+i1+i4+i5+i7)%4;
num[4] = (clk[4]+i1+i3+i5+i7+i9)%4;
num[5] = (clk[5]+i3+i5+i6+i9)%4;
num[6] = (clk[6]+i4+i7+i8)%4;
num[7] = (clk[7]+i5+i7+i8+i9)%4;
num[8] = (clk[8]+i6+i8+i9)%4;
int sum=0;
for(int i=0;i<9;i++)
sum+=num[i];
if(sum==0)
{
for(int j=1;j<=i1;j++)
printf("1 ");
for(int j=1;j<=i2;j++)
printf("2 ");
for(int j=1;j<=i3;j++)
printf("3 ");
for(int j=1;j<=i4;j++)
printf("4 ");
for(int j=1;j<=i5;j++)
printf("5 ");
for(int j=1;j<=i6;j++)
printf("6 ");
for(int j=1;j<=i7;j++)
printf("7 ");
for(int j=1;j<=i8;j++)
printf("8 ");
for(int j=1;j<=i9;j++)
printf("9 ");
return 0;
}
}
}
}
}
}
}
}
}
}
return 0;
}POJ 1166 The Clocks(拨钟问题——枚举)
最新推荐文章于 2025-06-19 10:56:54 发布
本文介绍了一个使用C++解决复杂谜题的程序。该程序通过读取初始状态并尝试所有可能的操作组合来寻找解决方案。它展示了如何利用多重循环进行穷举搜索,并在找到符合条件的解时输出操作序列。
1万+

被折叠的 条评论
为什么被折叠?



