求助PTA L1-033 出生年 C++,显示部分错误
发布网友
发布时间:2023-06-13 01:47
我来回答
共1个回答
热心网友
时间:2024-12-04 12:47
#include <iostream>
#include <iomanip>
#include <set>
using namespace std;
int main()
{
int y, n;
cin >> y >> n;
int init_year = y;
int a[4];
while (1)
{
a[0] = y / 1000;
a[1] = (y / 100) % 10;
a[2] = (y / 10) % 10;
a[3] = y % 10;
//去重
set<int> temp_set(a, a+4);
if (temp_set.size() == n)
{
cout << y - init_year << ' ' << setfill('0') << setw(4) << y << endl;
break;
}
++y;
}
system("pause");
return 0;
}
这个题的核心在于“如何判断有几个数字不同”。你的代码其他的地方都没问题,只能是那两个for循环判断有几个数字相同的地方有问题了。
很遗憾,我分析了半天那两个for循环,也没弄清楚是怎么错的,这块有点复杂。
我把这块直接替换成了set,利用set自动去重的机制去数有几个数字不同了。
追问其实有关set的内容我不太懂哈,你这个去重set temp_set(a, a+4);是个啥意思啊?我查了半天也查不到这个方法