P1008 Runtime Error
查看原帖
P1008 Runtime Error
495670
鸭鸭吃香蕉吗楼主2021/3/16 15:20

我照着题解写的,但是就是运行超时,为什么呢?要怎样进行优化?

#include <iostream>
using namespace std;

void MyF(int a[], int num) //累计num中各个位的数字出现的次数到a[]中
{
    for (int i = 1; i <= 3; i++)
    {
        a[num % 10]++;
        num /= 10;
    }
}

int main()
{
    int j, k, temp = 0, x = 0, y = 0, z = 0;
    int a[10] ={0};

    for (int i = 1; i <= 9; i++)
    {
        for (j = 1; j <= 9; j++)
        {
            if (j == i)
            {
                break;
            }
            for (k = 1; k <= 9; k++)
            {
                if (k == i || k == j)
                {
                    break;
                }
                //x为输出的第一个数字,y为第二个,z为第三个
                x *= 10, x += i, x *= 10, x += j, x *= 10, x += k;
                y = x * 2, z = x * 3;
                MyF(a, x); //累计x中各位数字出现的次数到a[]中
                MyF(a, y);
                MyF(a, z);
                temp = 1;
                for (int l = 1; l <= 9; l++)//检查x,y,z中的数字是否是1到9都只出现过一次
                {
                    if (a[l] != 1)
                    {
                        temp = 0;
                        break;
                    }
                }
                for (int l = 1; l <= 9; l++)
                {
                    a[l] = 0;
                }
                if (temp)
                {
                    cout << x << " " << y << " " << z << endl;
                }
            }
        }
    }
    return 0;
}
2021/3/16 15:20
加载中...