習題2-6:排列

原先在《算法競賽入門經典》看過這題,當時沒想出來選擇百度。結果洛谷再次跳出來了。很尷尬,忘了作題方法的我繼續百度。重作了一遍,很慚愧算法

 1 #include <stdio.h>
 2 #include <string.h>
 3 int main(void)
 4 {
 5     int a, b;
 6     int sum=0;
 7     int ar[15];
 8     memset(ar, 0, sizeof(ar));//memset將ar數組所有格式化爲0
 9     for (int n = 111; n <= 333; n++)//在111前不會重複,到333以後第三個數溢出1000
10     {
11         sum = 0;//重置計數器
12         a = n * 2;
13         b = n * 3;
14         ar[n / 100] = ar[n / 10 % 10] = ar[n % 10] = 1;//將出現的數字的位數在數組中記爲1
15         ar[a / 100] = ar[a / 10 % 10] = ar[a % 10] = 1;
16         ar[b / 100] = ar[b / 10 % 10] = ar[b % 10] = 1;
17         for (int i = 1; i <= 9; i++)
18             sum += ar[i];//將數組中9個數字加起來
19         if (sum == 9)//若爲9,則每一個數字都出現過一遍
20             printf("%d %d %d\n", n, a, b);
21         memset(ar, 0, sizeof(ar));//重置數組
22     }
23     return 0;
24 
25 }
相關文章
相關標籤/搜索