演算法競賽入門經典:習題2-6排列
阿新 • • 發佈:2019-01-02
嘛...題目就是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; }