1. 程式人生 > >演算法競賽入門經典:習題2-6排列

演算法競賽入門經典:習題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;
}