不太懂哪裡有錯?
先合併,在排序
#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),有可能裝不下。因而導致「記憶體區段錯誤」。