問題解決のアイデア:
(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;
}