11. スネーク・マトリックス

【問題の説明】蛇行行列とは、1から始まる自然数を順番に並べてできる三角行列です

[入力形式] 正の整数 N は階層数を示し、N は 100 以下です。

[出力形式] N行の蛇行行列を出力します 行列の三角形内の同一行の数値はスペースで区切られ、行末に余分なスペースはありません。

【入力例】

5

【出力例】

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

前に書く:ルールをまとめてアナログ出力する

詳細については、次のコード (AC) を参照してください。

#include<bits/stdc++.h>
using namespace std;
int main() {
	int n;
	cin>>n;
	int nt=n+1;
	int begin=1;
	int btemp=0;
	int jiangelie=0;//列两个数之间的间隔,从1开始
	int jiangehang=1;//最开始两个数的行之间间隔,从2开始
	int jiangehangtemp;//从第二行开始和第一行的间隔的关系
	while(nt--) {//控制层数
		int ntemp=nt;
		int flag1=0;
		int flag2=0;
		while(ntemp--) {//控制每一层的个数
			cout<<begin<<' ';
			if(flag1==0) { //第一次进入
				btemp=begin;//将每次的第一行数字进行记录
				flag1=1;
			}
			jiangehang++;
			if(flag2==0) { //第一次进入
				jiangehangtemp=jiangehang;
				flag2=1;
			}
			begin+=jiangehang;
		}
		cout<<endl;
		jiangelie++;//1,2,3,4.....
		begin=btemp+jiangelie;//1,2,4,7,11..... 
		jiangehang=jiangehangtemp;
	}
	return 0;
}

類似のトピック: 19. 円を数える_longzaizai_ のブログ - CSDN ブログ

おすすめ

転載: blog.csdn.net/longzaizai_/article/details/120228755