不太懂哪裡有錯?
先合併,在排序
#include<bits/stdc++.h>
using namespace std;
int main(){
int a, b, counter = 0;
cin>>a>>b;
int n[a], m[b];
for(int j = 0; j < a; j++){
counter = 0;
for(int i = 0; i < b; i++){
cin>>n[i];
}
for(int i = 0; i < b; i++){
cin>>m[i];
}
int x[b*2];
for(int i = 0; i < b; i++){
x[i] = n[i];
x[i+b] = m[i];
}
sort(x, x+b+b);
/*for(int i = 0; i < b*2-1; i++){
cout<<x[i]<<" ";
}*/
for(int i = 0; i < b*2-1; i++){
if(x[i] == x[i+1]){
counter++;
}
}
cout<<counter<<endl;
}
}
不太懂哪裡有錯?
先合併,在排序
#include<bits/stdc++.h>
using namespace std;
int main(){
int a, b, counter = 0;
cin>>a>>b;
int n[a], m[b];
for(int j = 0; j < a; j++){
counter = 0;
for(int i = 0; i < b; i++){
cin>>n[i];
}
for(int i = 0; i < b; i++){
cin>>m[i];
}
int x[b*2];
for(int i = 0; i < b; i++){
x[i] = n[i];
x[i+b] = m[i];
}
sort(x, x+b+b);
/*for(int i = 0; i < b*2-1; i++){
cout<<x[i]<<" ";
}*/
for(int i = 0; i < b*2-1; i++){
if(x[i] == x[i+1]){
counter++;
}
}
cout<<counter<<endl;
}
}
題目沒有說 n 、 m 誰比較大喔。
所以您的 x 陣列開 2b 大小(也就是2m),有可能裝不下。因而導致「記憶體區段錯誤」。