第一次写博客,闲话不说,直接上题。
牛客网在线编程题目BC79(双击)
在此题之前,我一直认为变长数组可以有如下操作:
int m,n,a[m][n];
直到今天刷到此题,才知道原来必须得等m,n的值明确是,该变长数组才有意义;如下,
变长数组才算真正完成了定义。
int m,n; scanf("%d %d",&m,&n); int a[m][n];
在此之前,我的代码是:
#include<stdio.h> int main(){ int m,n,a[m*2+1][n+1],x=0; scanf("%d %d",&m,&n); for(int i=1;i<m*2+1;i++){ for(int j=1;j<n+1;j++) scanf("%d",&a[i][j]); } for(int i=1;i<m+1;i++){ for(int j=1;j<n+1;j++) if(a[i][j]==a[i+m][j]) ++x; } printf("%.2f",float(x)/(m*n)*100); return 0;
结果运行答案始终为:100.00
在改为以下代码时,终于通过了题目(T_T)~
#include<stdio.h> int main(){ int m,n,a[100][100],x=0; scanf("%d %d",&m,&n); for(int i=1;i<m*2+1;i++){ for(int j=1;j<n+1;j++) scanf("%d",&a[i][j]); } for(int i=1;i<m+1;i++){ for(int j=1;j<n+1;j++) if(a[i][j]==a[i+m][j]) ++x; } printf("%.2f",float(x)/(m*n)*100); return 0; }
仅仅因为初始化数组的问题,在这题上硬生生耗费了一个多小时,希望能对和我一样的小白有所启发。
最后,感谢阅读,谢谢!
(Ps:跪求大佬加好友指点迷津,一个人的旅途太过艰难,(T_T)帮帮孩子吧。。。。)