문제에 블루 브릿지 컵 교육 솔루션 - 매트릭스 사냥 (문제 1097)

원래 제목 링크 : HTTP : //www.dotcpp.com/oj/problem1097.html

제목 설명

뱀 행렬은 순차적 시작 부분에 배치 자연수 (1)의 삼각 행렬이다.

기입

데이터 세트의 표제 복수 의해 정수 N으로 구성된 각 데이터. (N은 100보다 크지 않다)

수출

각 데이터 세트 및 사문석의 N 행의 행렬을 출력한다. 출력의 두 세트 사이에 여분의 빈 라인을 수행하십시오. 동일한 라인에서 디지털 매트릭스 삼각형 공간으로 분리된다. 라인의 끝 여분의 공백을한다.

샘플 입력

5

샘플 출력

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

문제 해결 아이디어

- 0 15 1 3 6 10
12 14 9 5
2 - 13 인 4.8.
3 -. 12 7.
4. 11.
우리 분석, 이와 같은 문제는, 행과 열을 연결하여야한다
첫번째 행 0 숫자 1 1 + 2 (+ 2 0) 1 + 2 + 3 1 + 2 + 3 + 4 1 + 2 + 3 + 4 + 5
제 번호가 첫 번째 행 2 2 + 3 (1 + 2 ) 2 + 3 + 4 2 + 3 + 4 + 5
번째 행은 제 번호 4 4 + 4 (+ 2/2) 4 + 4 + 5
번째 행에 대한 첫 번째 번호는 7이다 . 7 + 5 ( 3 + 2)
의 첫 번째 숫자로는 네 번째 행의 11
행마다 제 번호를 관찰함으로써 제 행 I + 2 + 수가 긴 축적 이어진다 플러스 = Q는 단지 시작 후 결정 Q는 i 번째 행과 Q = +2 일 필요 합산하여 증가
그럼 그 라인의 시작 번호 결정 하였다
. 1 - 0
. 1 - 2
2 -. (4)
(3) -.. (7)
. (4) -11
그것은 쉽게 볼이다 (이전 라인의 시작점) 2 = 1 (이전 라인의 시작 값) + 1 (선 전류 번호) (스타트 라인 번호 0 (1)의 세트이다) (4 2 + 2 = 라인 시작 값에서 현재의 라인 수) 7 = 4 (라인 시작 값에) + 3 (현재 행 번호) (11) = 7 () 행 +4 (현재 수)
우리의 어레이를 처리하는지 이렇게
기록 식 : 전류 초기 값은 라인 + 현재의 라인 수와 같은
식에 [I] = A [ I-1] + I
다른 점은 그
첫번째 행의 시작에서, 각각의 행 라인 소자의 수 미만을

참조 코드

#include<iostream>
#include<cstdio>
#define Max 101
using namespace std;
int main()
{
	int n,a[Max];
	int p=1,q;
	int k;
	//循环录入每行的初始值 
	for(int i = 0;i < 101;++i)
	{
		if(i != 0)
		{
			a[i] = a[i-1]+i;
		}
		else
		{
			a[i] = 1;
		}
		
	}
	while(cin>>n)
	{
		//k是列数   
		k = n;
		for(int i=0;i <n;++i)
		{
			 
			p = a[i];
			q = i+2;
			
			for(int j=0;j < k;++j)
			{
				if(j == 0)
				{
					cout << p <<" "; 
				}else
				{
					p=p+q;
					q +=1;
					//到达尾部就不要输出空格 
					if(j ==k-1)
					{
						cout << p ;
					}else
					{
						cout << p <<" ";
					}
				}
			}
			--k; //列数相对上一行少1 
			cout<<endl;
			
		}
	}
	return 0;
}
게시 19 개 원래 기사 · 원의 찬양 3 · 조회수 3813

추천

출처blog.csdn.net/weixin_42792088/article/details/86741320