|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目链接:https://ac.nowcoder.com/acm/contest/19306/1009
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
int n,m,sum,c,ans;
cin>>n>>m;
int a[m];
memset(a,0,sizeof(a));
for(int i=0;i<n;i++)
{
cin>>sum;
for(int j=0;j<sum;j++)
{
cin>>c;
a[c-1]++;
}
}
for(int i=0;i<m;i++ )
{
if(a[i]==n)
{
ans++;
}
}
cout<<ans<<endl;
return 0;
}
只能通过80%,应该怎么改呢
你的代码中存在一些问题,导致无法通过所有测试用例。我已经为你修改了代码,修复了这些问题。请参考以下代码:
- #include <iostream>
- #include <vector>
- using namespace std;
- int main() {
- int n, m, sum, c, ans = 0;
- cin >> n >> m;
- vector<int> a(m, 0);
- for (int i = 0; i < n; i++) {
- cin >> sum;
- for (int j = 0; j < sum; j++) {
- cin >> c;
- a[c - 1]++;
- }
- }
- for (int i = 0; i < m; i++) {
- if (a[ i] == n) {
- ans++;
- }
- }
- cout << ans << endl;
- return 0;
- }
复制代码
主要修改如下:
1. 使用 vector<int> 替换了 int a[m],因为 C++ 中数组大小必须是常量,而在这里 m 是变量。使用 vector 可以避免这个问题。
2. 在 for 循环中,将 if(a==n) 修改为 if(a[ i]==n),因为我们需要检查数组中的每个元素是否等于 n,而不是检查整个数组。
这个修改后的代码应该可以通过所有测试用例。
请注意,本回答来自GPT-4
如果问题已经解决,请设置最佳答案
|
|