1. 程式人生 > >ACM準備之路(演算法競賽入門經典1)排列

ACM準備之路(演算法競賽入門經典1)排列

問題: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;
}