我照着题解写的,但是就是运行超时,为什么呢?要怎样进行优化?
#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;
}