|
|
发表于 2023-10-9 20:29:27
|
显示全部楼层
这是一个蛇形矩阵的生成程序,但是在数字到达10的时候就出现了问题,因为此时应该往左走而不是往上走。可以通过修改循环的条件来解决这个问题。以下是修改后的代码:
- #include <bits/stdc++.h>
- using namespace std;
- int a[1001][1001];
- int main()
- {
- int n,k=1,looper,x=0,y=0,num=1,tol=0;;
- cin>>n;
- looper =n*n;
- a[0][0]=1;
- while(num<=looper)
- {
- num++;
- y++;
- tol++;
- a[x][y]=num;
- for(int i=0;i<tol-1;i++) // 修改循环条件
- {
- num++;
- x++;
- y--;
- a[x][y]=num;
- }
- if(num > looper) break; // 添加判断条件
- num++;
- x++;
- tol++;
- a[x][y]=num;
- for(int i=0;i<tol-1;i++)
- {
- num++;
- x--;
- y++;
- a[x][y]=num;
- }
- }
- for(int i=0;i<n;i++)
- {
- for(int j=0;j<n;j++)
- {
- cout<<a[ i][j]<<" ";
- }
- cout<<endl;
- }
- }
复制代码
修改后的程序中,第一个for循环的条件变成了 for(int i=0;i<tol-1;i++) ,这是因为在第一次循环时已经将y加了1,所以后面的循环次数要减1。同时,在第二个for循环前添加了一个判断条件 if(num > looper) break; ,用来判断是否已经生成完整个矩阵,如果已经生成完毕,则跳出循环。 |
|