其他分享
首页 > 其他分享> > Noi.openjudge 1.8.24 蛇形填充数组

Noi.openjudge 1.8.24 蛇形填充数组

作者:互联网

题目描述

用数字1,2,3,4,...,n*n这n2个数蛇形填充规模为n*n的方阵。

蛇形填充方法为:

对于每一条左下-右上的斜线,从左上到右下依次编号1,2,...,2n-1;按编号从小到大的顺序,将数字从小到大填入各条斜线,其中编号为奇数的从左下向右上填写,编号为偶数的从右上到左下填写。

比如n=4时,方阵填充为如下形式:

1267
35813
491214
10111516

输入

输入一个不大于10的正整数n,表示方阵的行数

输出

输出该方阵,相邻两个元素之间用单个空格间隔

样例输入

4

样例输出

1 2 6 7
3 5 8 13
4 9 12 14
10 11 15 16

思路分析

此题只能寻找数字与行列之间的规律,上代码:


#include <iostream>
using namespace std;
int main () {
	int i,j,k,n,s=1;
	cin>> n;
	int a[n][n];
	a[0][0]=s;
	for (k=1;k<=(n-1)*2;k++){
		if (k%2!=0){
			i=0;
			j=k-i;	
			while (i<=k){
				if (i<n&&j<n){
					s++;
					a[i][j]=s;
				}
				i++;
				j--;
			}
		}
		else{
			j=0;
			i=k-j;
			while(j<=k){
				if (i<n&&j<n){
					s++;
					a[i][j]=s;
				}
				i--;
				j++;
			}
		}
		
	}
	for (i=0;i<n;i++){
		for (j=0;j<n;++j){
			cout<<a[i][j]<<' ';
		}
		cout<<endl;
	}	
	return 0;
}

仅供参考,请多指教

标签:24,Noi,填充,int,1.8,蛇形,编号,左下,方阵
来源: https://blog.csdn.net/KotlinProgram/article/details/118913651