请各位大师牛人帮我看下下面的有关C++蛇形矩阵的程序,能指点我一下错在哪里吗?感激不尽!

2025-01-02 11:07:56
推荐回答(2个)
回答1:

你的程序逻辑很混乱,看看我的程序:

#include
using namespace std;
int main()
{
//该程序虽然能通过评测系统的检测,但时间复杂度为O(n^3),因而有待改进
int N=10;
//矩阵阶数
int a[11][11]; //N阶矩阵
int count=0; //矩阵元素值,初始为0
for(int i=1;i<=2*N-1;i++)
{
//N阶方阵有2*N-1条反对角线,依次遍历之
if(i%2!=0)
{
//当对角线编号为奇数时,各元素按此对角线上的矩阵各元素下标之和从小到大的顺序排列
for(int j=1;j<=N;j++)
for(int k=1;k<=N;k++)
{
if(j+k==i+1) a[j][k]=++count;
//各元素的下标之和==对角线编号+1
}
}
else
{
//当对角线编号为偶数时,各元素按此对角线上的矩阵各元素下标之和从大到小的顺序排列
for(int j=N;j>=1;j--)
for(int k=N;k>=1;k--)
{
if(j+k==i+1) a[j][k]=++count;
//各元素的下标之和==对角线编号+1
}
}
}
for(i=1;i<=N;i++)
for(int j=1;j<=N;j++)
{
if(j!=N) cout< else cout< }
system("pause");
return 0;
}

回答2:

问题很多,建议从基础简单的例子开始练习.