社区讨论
P1008 Runtime Error
P1008[NOIP 1998 普及组] 三连击参与者 3已保存回复 7
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 7 条
- 当前快照
- 1 份
- 快照标识符
- @locj79lg
- 此快照首次捕获于
- 2023/10/30 14:41 2 年前
- 此快照最后确认于
- 2023/11/05 01:59 2 年前
我照着题解写的,但是就是运行超时,为什么呢?要怎样进行优化?
CPP#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;
}
回复
共 7 条回复,欢迎继续交流。
正在加载回复...