离散的程序作业,因为二维的传到函数里比较麻烦,就写在主函数里了,求不要介意。现在程序不知道为什么连main都进入不了,用CB和VS都是直接崩,实在不懂哪里的问题。谢谢~
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <math.h> 4 5 #define N 1000 6 7 int main(){ 8 int HOctHalf[N][N]; 9 int m,n; 10 scanf(" %d%d",&m,&n); 11 for(int i = 1;i <= m;i++){ 12 for(int j = 1;j <= n-m;j++){ 13 scanf(" %d",&HOctHalf[i][j]); 14 } 15 } 16 /* 17 int pow; 18 int HDecHalf[N]; 19 for(int j = 1;j <= n-m;j++){ 20 pow = 1; 21 HDecHalf[j] = 0; 22 for(int i = m;i <= n-m;i++){ 23 HDecHalf[j] += pow*HOctHalf[i][j]; 24 pow *= 2; 25 } 26 } 27 */ 28 int code[N][N]; 29 int temp; 30 for(int i = 0;i <= (int)pow(2,m);i++){ 31 temp = i; 32 for(int j = m;j >= 1;j++){ 33 code[i][j] = temp%2; 34 temp /= 2; 35 } 36 } 37 38 int codeWord[N][N]; 39 for(int i = 0;i <= (int)pow(2,m);i++){ 40 for(int j = 1;j <= m;j++){ 41 codeWord[i][j] = code[i][j]; 42 } 43 } 44 45 for(int i = 0;i <= (int)pow(2,m);i++){ 46 for(int j = 1;j <= n-m;j++){ 47 codeWord[i][j+m] = 0; 48 for(int k = 1;k <= m;k++){ 49 codeWord[i][j+m] += code[i][k]*HOctHalf[k][j]; 50 } 51 codeWord[i][j+m] %= 2; 52 } 53 } 54 55 56 57 int decode[N]; 58 for(int i = 1;i <= n;i++) 59 scanf("%d",&decode[i]); 60 61 int cnt[N]; 62 for(int i = 0;i <= (int)pow(2,m);i++){ 63 for(int j = 1;j <= n;j++){ 64 if((decode[j]^codeWord[i][j]) == 1) 65 cnt[i]++; 66 } 67 } 68 69 int min = cnt[0],minRpos = 0; 70 for(int i = 1;i <= (int)pow(2,m);i++){ 71 if(min < cnt[i]){ 72 min = cnt[i]; 73 minRpos = i; 74 } 75 } 76 77 for(int i = 1;i <= m;i++) 78 printf("%d",code[minRpos][i]); 79 printf("\n"); 80 81 return 0; 82 }
栈一般是1M,这里超出栈的大小了。