|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include <bits/stdc++.h>
- using namespace std;
- const int N=10000;
- string b[N];
- int a[1000];
- int main()
- {
- int m,n;
- cin>>m;
- while(m--)
- {
- cin>>n;
- string s;
- for(int i=0;i<n;i++)
- {
- cin>>b[i];
- }
- for(int i=0;i<n;i++)
- {
- s=b[i];
- // cout<<s<<endl;
- for(auto j:s)
- {
- // cout<<j<<endl;
- a[j-'a']++;
- // cout<<a[j-'a']++<<endl;
-
- }
- }
- int flag =1;
- for(int i=1;i<=26;i++)
- {
- if(a[i]%n!=0)
- {
- flag=0;
- break;
- }
- }
- if(flag)
- {
- cout<<"YES"<<endl;
- }
- else
- {
- cout<<"NO"<<endl;
-
- }
-
-
- }
- }
复制代码
为什么输入样例会发生错误
1
ccab
cbac
bca
acbcc
这段代码的问题在于它没有正确地初始化数组 a 。由于 a 是一个整数数组,它的元素默认值是未定义的。因此,在进行自增运算之前,必须确保 a 的所有元素都被初始化为0。
要修复这个问题,可以在 main 函数的开头添加一行代码来初始化数组 a :
这行代码使用 memset 函数将数组 a 的所有元素都设置为0。将这行代码添加到 main 函数的开头,然后重新编译和运行代码,输入样例就不会出错了。
修复后的代码如下:
- #include <bits/stdc++.h>
- using namespace std;
- const int N = 10000;
- string b[N];
- int a[1000];
- int main()
- {
- int m, n;
- cin >> m;
- while (m--)
- {
- cin >> n;
- string s;
- for (int i = 0; i < n; i++)
- {
- cin >> b[ i];
- }
- memset(a, 0, sizeof(a)); // 初始化数组a
- for (int i = 0; i < n; i++)
- {
- s = b[ i];
- for (auto j : s)
- {
- a[j - 'a']++;
- }
- }
- int flag = 1;
- for (int i = 1; i <= 26; i++)
- {
- if (a[ i] % n != 0)
- {
- flag = 0;
- break;
- }
- }
- if (flag)
- {
- cout << "YES" << endl;
- }
- else
- {
- cout << "NO" << endl;
- }
- }
- return 0;
- }
复制代码
希望能帮到你!
|
|