算法竞赛入门经典:习题2-6排列

        嘛...题目就是1-9,九个数字,每个数字只能用一次,组成三个三位数,要求三个数的比为1:2:3。

        暴力循环直接就可以过的~

        PS:书上提示说这个题不用太动脑筋,所以我们直接无脑暴力即可

#include<stdio.h>
#include<string.h>
int main()
{
	int a[10];
	int s;
	int flag;//创建一系列变量啦,数组用来存数字出现了几次,s用来存数字检查,flag则用来判断是否应该输出
	for (int i = 100; i < 334; i++)//因为最大的数字不能超过一千,所以这里最小的数字不能超过333
	{
		flag = 1;//一开始flag每次循环都初始化为1即可
		memset(a, 0, sizeof(a));//快速初始化
		for (int j = 1; j < 4 && flag; j++)//一到三倍的数字检查
		{
			s = j*i;
			while (s > 0)
			{
				a[s % 10]++;
				if (a[s % 10] > 1)//如果数字重复,那么对应位置的计数肯定是要大于一的,所以这里直接就可以给它弄成flag=0
				{
					flag = 0;
					break;
				}
				s /= 10;
			}
		}
		if (flag == 0)
		{
			continue;//如果flag为0直接进行下一次循环
		}
		else
		{
			printf("%d %d %d\n", i, i * 2, i * 3);//当然如果flag2为1的话就输出啦~
		}
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/elliot_alderson/article/details/79598067