暴力循环加限制条件后出错
查看原帖
暴力循环加限制条件后出错
816208
zmf12138楼主2022/10/15 10:00

把下面注释掉的代码加上之后就只能输出部分结果: 219 438 657 327 654 981

注释掉之后才能输出全部结果: 192 384 576 219 438 657 273 546 819 327 654 981

# include <iostream>
# include <stdlib.h>
# include <cstring>
using namespace std;

//排列组合,遍历所有可能
//把数组转换为整数 
//检查是否符合1:2:3
//输出 

int main(void)
{
	int a1[3],a2[3],a3[3];
	for(int i1=1;i1<=9;i1++)
	{
		a1[0] = i1;
		for(int i2=1;i2<=9;i2++)
		{
			if(i2!=i1) a1[1] = i2;
			else continue;
			for(int i3=1;i3<=9;i3++)
			{
				if(i3!=i1&&i3!=i2) a1[2] = i3;
				else continue;
				for(int i4=2;i4<=9;i4++) //剔除一定不满足1:2的 
				{
//					if(i4>=2*i1)
//					{
					if(i4!=i1&&i4!=i2&&i4!=i3) a2[0] = i4;
					else continue;
					for(int i5=1;i5<=9;i5++)
					{
						if(i5!=i1&&i5!=i2&&i5!=i3&&i5!=i4) a2[1] = i5;
						else continue;
						for(int i6=1;i6<=9;i6++)
						{
							if(i6!=i1&&i6!=i2&&i6!=i3&&i6!=i4&&i6!=i5) a2[2] = i6;
							else continue;	
							for(int i7=3;i7<=9;i7++) //剔除一定不满足1:2:3的 
							{
//								if(i7>=3*i1&&i7>=1.5*i2)
//								{
								if(i7!=i1&&i7!=i2&&i7!=i3&&i7!=i4&&i7!=i5&&i7!=i6) a3[0] = i7;
								else continue;
								for(int i8=1;i8<=9;i8++)
								{
									if(i8!=i1&&i8!=i2&&i8!=i3&&i8!=i4&&i8!=i5&&i8!=i6&i8!=i7) a3[1] = i8;
									else continue;
									for(int i9=1;i9<=9;i9++)
									{
										if(i9!=i1&&i9!=i2&&i9!=i3&&i9!=i4&&i9!=i5&&i9!=i6&i9!=i7&i9!=i8) a3[2] = i9;
										else continue;
										//得到三个数组,现在转换为三个整数
										int result[3]; //记录三个整数
										result[0] = a1[0]*100+a1[1]*10+a1[2];
										result[1] = a2[0]*100+a2[1]*10+a2[2];
										result[2] = a3[0]*100+a3[1]*10+a3[2];
										if(result[0]*2==result[1]&&result[0]*3==result[2]) cout<<result[0]<<" "<<result[1]<<" "<<result[2]<<endl;
									}
								}
//								}
							 } 
						}
					} 
//					}
				}
			}
		}
	}
	
	return 0;
 } 
2022/10/15 10:00
加载中...