解题思路:
(1)每次往右上角走,溢出则跳到初始记录的下一行
#include<iostream>
#include<vector>
using namespace std;
vector<vector<int>> helper(int n) {
vector<vector<int>> v(n,vector<int>(n,0));
int a=1,i=0,j=0,row=0;
v[0][0]=a;
while(i<n) {
if(0<=i-1 && j+1<n) {
row=i;
while(0<=i-1 && j+1<n){
a++;
i--;
j++;
v[i][j]=a;
}
i=row+1;
j=0;
a++;
if(i<n) v[i][j]=a;
} else {
i++;
j=0;
a++;
v[i][j]=a;
}
}
return v;
}
int main() {
int n;
while(cin>>n) {
vector<vector<int>> v = helper(n);
for(int i=0;i<n;i++) {
for(int j=0;j<n-i;j++) {
cout<<v[i][j]<<" ";
}
cout<<endl;
}
}
return 0;
}