我打的如下,前25%是AC,可是後75%出現記憶體區段錯誤。
跪求大神解惑
#include <stdio.h>
int main(){
int full,CP_amount; //full是討論的角色數,CP_amount是有多少CP
scanf("%d %d",&full,&CP_amount);
int CP[CP_amount][full]; //定義一個二維陣列,每一列是一個CP,每一欄則是討論的角色,1代表這個CP有這個角色,0則否(舉例來說CP[0][0]==1表示第一個CP有A這個角色)
for(int i=0;i<CP_amount;i++){ //先定義全部為0
for(int k=0;k<full;k++){
CP[i][k]=0;
}
}
char cp[1000];
int character; //角色代碼
for(int i=0;i<CP_amount;i++){
scanf("%s",&cp);
for(int k=0;cp[k]!='\0';k++){ //每次輸入cp都判定如果k<91表示是大寫,角色代號就是(ASCll碼-65)(若為A則角色代碼是0,B則為1......)
if(cp[k]<91)character=cp[k]-65;
if(cp[k]>96)character=cp[k]-123; //如果k>96表示是小寫,ASCll-123(若為a角色代碼是26,b則為27......)
CP[i][character]=1;
}
}
int complementary_cp=0/*互補cp的對數*/,if_complementary/*判定某兩個cp是否為互補(1表示互補,0表示不互補)*/;
for(int i=0;i<CP_amount;i++){
for(int k=i+1;k<CP_amount;k++){
if_complementary=1;
for(int j=0;j<full;j++){
if(CP[i][j]==CP[k][j])if_complementary=0;//如果某兩個cp的某一欄相等,表示這兩個cp都有某個角色或是都沒有某個角色,也就是不互補
}
if(if_complementary)complementary_cp++;
}
}
printf("%d",complementary_cp);
return 0;
}