P1618 三连击(升级版)为什么只有部分的输出
查看原帖
P1618 三连击(升级版)为什么只有部分的输出
919699
Utopia_H楼主2023/4/9 21:19

请各位dalao看下,qwq 写的可能比较笨

#include <iostream>
using namespace std;
int main()
{
  int flag[11] = {0};
  int a, b, c, k1, k2, k3, f = 0;
  cin >> k1 >> k2 >> k3;
  for (a = 1; a <= 9; a++)
  {
    flag[a] = 1;
    for (b = 1; b <= 9; b++)
    {
      if (flag[b] == 1)
        continue;
      else
      {
        flag[b] = 1;
        for (c = 1; c <= 9; c++)
        {
          if (flag[c] == 1)
            continue;
          else
          {
            int t1 = (int)(a * 100 + b * 10 + c) * 1.0 * k2 / k1, t2 = (int)(a * 100 + b * 10 + c) * 1.0 * k3 / k1;
            // cout<<a * 100 + b * 10 + c<<" "<<t1<<" "<<t2<<"**************"<<endl;
            flag[a]=1,flag[b]=1;
            if (t1 < 1000 && t2 < 1000)
            {
              while (t1)
              {
                if (flag[t1 % 10])
                {
                  f = 1;
                  break;
                }
                flag[t1 % 10]=1;
                t1 /= 10;
              }
              while (t2)
              {
                if (flag[t2 % 10])
                {
                  f = 1;
                  break;
                }
                flag[t2 % 10]=1;
                t2 /= 10;
              }
              if (f == 1)
              {
                f = 0;
                for (int i = 1; i <=10; i++)
                {
                  flag[i]=0;
                }
                continue;
              }
              cout << a * 100 + b * 10 + c << " " << (a * 100 + b * 10 + c) * 1.0 * k2/k1 << " " << (a * 100 + b * 10 + c) * 1.0 * k3/k1 << endl;
              flag[c] = 0;
            }
          }
          flag[c] = 0;
        }
      }
      flag[b] = 0;
    }
    flag[a] = 0;
  }
}

2023/4/9 21:19
加载中...