#19743: 求大神幫我看看哪裡錯(C#)


s610087@shsh.tw (哈庫拉瑪撒蘇撒)

學校 : 雲林縣正心高級中學
編號 : 106291
來源 : [140.115.204.68]
最後登入時間 :
2020-09-14 18:44:06
e288. 互補CP -- APCS | From: [118.233.243.18] | 發表日期 : 2019-10-25 23:03

我打的如下,前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;
}

 
ZeroJudge Forum