|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
如图,这段代码输出的第一个值出现了异常,经排查,发现是下面代码中days数组的days[0][2]出现了异常,我感觉是溢出,但是找不到溢出原因
我的代码:- #include<iostream>
- #include<cstring>
- using namespace std;
- int main()
- {
- int n, m, k; cin>>n>>m>>k;
- int days[k][m] = {0};
- for(int i=0; i<n; ++i)
- {
- for(int j=0; j<m; ++j)
- {
- int temp; cin>>temp;
- days[temp-1][j] = 1; //记录第temp天时,教练需要准备第j套模拟题
- }
- }
- for(int i=0; i<k; ++i)
- {
- int sum = 0;
- for(int j=0; j<m; ++j)
- {
- sum += days[i][j]; //计算第i天时,教练需要准备的模拟题数量
- //cout<<i<<" "<<j<<" "<<days[i][j]<<endl;
- }
- cout<<sum<<" "/*<<endl*/;
- }
- return 0;
- }
复制代码
题目地址
本帖最后由 柿子饼同学 于 2022-8-1 11:37 编辑
帮你把代码改好了, 可用过
哦对, 忘了说, days 反正只有 0 和 1, 可用直接用 bool 省空间 , 下面循环的时候判断是否为 1 , 再加即可
- #include <bits/stdc++.h>
- using namespace std;
- int n, m, k;
- int days[1005][1005]; //全局变量自动设为 0
- int main(){
- ios::sync_with_stdio(0);
- cin.tie(0); cout.tie(0);
- cin >> n >> m >> k;
- //int days[k][m] = {0}; 这样定义不对
- //memset(days, 0, sizeof(days)); 如果要用局部变量, 可用 memset , 这条语句意思是把 days 所有元素设为 0
- //注意, memset 是用字节的方法填充的, 所以建议只在第二个参数中填 0, -1, 1, 0x3f 等一个字节的
- for(int i = 1; i <= n; i++){
- for(int j = 1; j <= m; j++){
- int temp;
- cin >> temp;
- days[temp][j] = 1; //记录第temp天时,教练需要准备第j套模拟题
- }
- }
- for(int i = 1; i <= k; i++){
- int sum = 0;
- for(int j = 1; j <= m; j++){
- sum += days[i][j]; //计算第i天时,教练需要准备的模拟题数量
- //cout<<i<<" "<<j<<" "<<days[i][j]<<endl;
- }
- cout<<sum<<" "/*<<endl*/;
- }
- return 0;
- }
复制代码
|
|