这是一道找规律题,难点就在于如何让它往左往右,以及如何同时控制左上和右下的输出。
加入团队吧
#include<iostream>
using namespace std;
int main(){
int n,flag=0,pos_x=0,pos_y=0;
cin>>n;
int s[n][n] = {};
for(int i=0;i<n*(n+1)/2;i++){
s[pos_x][pos_y]=i+1;
if(i<n*(n-1)/2)
s[n-pos_x-1][n-pos_y-1]=n*n-i;//需要同时控制,否则会超出数组范围(亲测)
if(pos_x == 0&&!flag){
pos_y++;
flag=1;
}
else if(pos_y==0&&flag){
pos_x++;
flag=0;
}
else{
if(flag){
pos_x++;
pos_y--;
}
else{
pos_x--;
pos_y++;
}
}
}
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
cout<<s[i][j]<<" ";
}
cout<<endl;
}
return 0;
}