解题思路: 我就是看着下面这个图片解题的,然后一点点调试代码( -_- ) ,例如在每一个while循环里面都尝试过对应 i 和 j ,然后根据输出结果一点点找问题改
注意事项:
参考代码:
#include<iostream>
using namespace std ;
int main ( )
{
int n = 0 ;
cin >> n ;
int a[n+1][n+1] = {0} ;
a[1][1] = 1 ;
int i = 1 , j = 2 , len = 1 ;
while ( !(i==n && j==n) )
{
if ( i<j )
{
int m = j , p = i ;
while ( i<=m && j>= p )
{
if ( i<=n && j<=n ) a[i][j] = ++len ;
i++ ; j-- ;
}
j += 1 ;
}
if ( i>j )
{
int m = j , p = i ;
while ( i>=m && j<= p )
{
if ( i<=n && j<=n )
a[i][j] = ++ len ;
j++ ;
i-- ;
//【例如,这里曾打印过去每一个 i 和 j 】
if ( i<1 || j>n ) break ;
}
//【例如,这里曾打印过分隔符,用来分开两次循环】
i += 1 ;
if ( i+1==n ) j+=1 ;
}
if ( i==j )
{
a[i][j] = len ;
break ;
}
}
for ( int i = 1 ; i <= n ; i ++ )
{
for ( int j = 1 ; j <= n ; j ++ )
{
cout << a[i][j] << " " ;
}
cout << endl ;
}
return 0 ;
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复