#16663: NA RE(記憶體區段錯誤!)


michaelwang920324@gmail.com (王少甫)

學校 : 臺北市私立復興實驗高級中學
編號 : 89781
來源 : [175.159.121.189]
最後登入時間 :
2021-09-12 15:13:38
d478. 共同的數 - 簡易版 | From: [1.163.64.82] | 發表日期 : 2019-01-27 22:37

不太懂哪裡有錯?

先合併,在排序

 

#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;

}
}

 
#16671: Re:NA RE(記憶體區段錯誤!)


inversion (「我們所認識的可符香是個像天使的好女孩」之葉林 *Cries...)

學校 : 國立清華大學
編號 : 43537
來源 : [49.159.6.107]
最後登入時間 :
2022-05-28 19:29:12
d478. 共同的數 - 簡易版 | From: [49.158.83.43] | 發表日期 : 2019-01-28 21:02

不太懂哪裡有錯?

先合併,在排序

 

#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),有可能裝不下。因而導致「記憶體區段錯誤」。


 
ZeroJudge Forum