<<算法竞赛入门经典>> 习题2-10

//刘汝佳<<算法竞赛入门经典>> 习题2-10
#include <iostream>
using namespace std;
bool flag[10] = {false};
void reFlag()
{
 for(int j=1;j<10;++j)
  flag[j] = false;
}
bool setFlag(int p)
{
 if(flag[p/100])
  return false;
 else
  flag[p/100]= true;
 if(flag[p/10%10])
  return false;
 else
  flag[p/10%10] = true;
 if(flag[p%10])
  return false;
 else
  flag[p%10] = true;
}
bool containZero(int q)
{
 if(q%10==0 || q/10%10==0)
  return true;
 else
  return false;
}
int main()
{
 int a,b,i;
 for(i=123;i<=321;++i)
 {
  a = i*2;
  b = i*3;
  reFlag();
  if(containZero(i) || containZero(a) || containZero(b) || !setFlag(i) ||!setFlag(a) ||!setFlag(b)) continue;
  printf("%d %d %d\n",i,a,b);
 }
 return 0;
}

posted @ 2011-06-26 16:09  北海小龙  阅读(353)  评论(0编辑  收藏  举报