构造等差矩阵的C代码逻辑失效场景与错误原因排查
矩阵构造题代码错误排查
题目要求
构造元素均为正整数的N×M矩阵,满足以下规则:
- 若M>1,对于所有1≤i≤N,第i行从左到右严格递增,行内元素为固定公差
d_i的等差数列 - 若N>1,对于所有1≤j≤M,第j列从上到下严格递增,列内元素为固定公差
c_j的等差数列 - 所有公差(行公差d_i、列公差c_j)互不相同;若存在多组合法解,需构造最大元素尽可能小的矩阵
现有C语言实现
#include<stdio.h> #include<stdlib.h> int main(){ int t=0,n=0,m=0,d=0; scanf("%d",&t); while(t--){ scanf("%d%d",&n,&m); if(n>=m){ d=2; for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ printf("%d ",(i+1) + j*d); } d+=2; printf("\n"); } } else{ d=1; for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ printf("%d ",(2*i+1) + j*d); } d+=2; printf("\n"); } } } return 0; }
官方样例
样例输入
3 3 3 1 2 1 1
样例输出
1 2 3 3 6 9 5 10 15 1 2 1
实现思路说明
当前代码的核心逻辑为:
- 判断行数
n和列数m的大小,维度更长的方向使用偶数值作为公差(从2开始依次取2,4,6……),维度更短的方向使用奇数值作为公差(从1开始依次取1,3,5……) - 以2×3输入为例,代码输出矩阵如下:
1 3 2 6 3 9
问题现象
代码可以通过给出的公开样例,但提交后始终无法通过隐藏测试用例,多次尝试定位代码失效场景未成功,需要找出逻辑错误点,并举出代码运行失败的具体测试用例。
内容的提问来源于stack exchange,提问作者jdsouza
相关产品推荐
相关产品推荐

