ACM準備之路(演算法競賽入門經典1)排列
阿新 • • 發佈:2019-01-09
問題:1~9,組成三個三位數,abc、def,ghi,每個數字用且只用一次,使三個數為1:2:3,每行一個解。這是書上2-6,由於當時想的方法太麻煩,然後去網上找了大佬的一篇文章,具體是哪位的不太記得了,在此說聲謝謝,確實想的比我的簡單多了。
ps:良品鋪子的芒果乾不錯
#include <cstdio> int main(int argc, char const *argv[]){
int abc, def, ghi;
for (abc = 123; abc <= 329; ++abc)
{
bool visit[10] = { false }; //統計0~9是否出現
//標記abc各位
visit[abc / 100] = visit[abc / 10 % 10] = visit[abc % 10] = true;
//標記def各位
def = 2 * abc;
visit[def / 100] = visit[def / 10 % 10] = visit[def % 10] = true;
//標記ghi各位
ghi = 3 * abc;
visit[ghi / 100] = visit[ghi / 10 % 10] = visit[ghi % 10] = true;
//檢查完全性
bool flag = true;
for (int i = 1; i <= 9; ++i)
if (visit[i] != true)
{
flag = false;
break;
}
if (flag)
cout << abc << ' ' << def << ' ' << ghi << endl;
}
system("pause");
return 0;
}