找规律题,题解来了
2024-06-10 15:31:27
发布于:上海
102阅读
0回复
0点赞
这是一道找规律题,难在如何从下往上,从右往左绕过来
看完题解,加入团队吧
#include<iostream>
using namespace std;
int main(){
int n;
cin>>n;
int s[n][n] = {};
int maxn=n-1,minn=0,left=0,right=n-1,m=n,c=0;
while(m>=1){
for(int i=0;i<(m-1)4;i++){
if(i<m)s[minn][left+i]=c+1;//正常从左往右绕
else if(i<m2-1)s[m-(m2-i)+1+left][maxn]=c+1;//从上往下绕,注意它与层数相关,后边亦是如此
else if(i<m3-2)s[maxn][left+m-(i-m2+1)-2]=c+1;//从右往左绕,逆向思维,带入数据验证代码有没有问题
else s[m-(i-m3+2+1)-1+left][minn]=c+1;//从下往上绕,逆向思维,带入数据验证代码有没有问题,最容易出错的地方要非常谨慎,否则功亏一篑了
c++;
}
maxn--;
minn++;
left++;
right--;
m-=2;
}
if(n%2)s[n/2][n/2]=n*n;
for(int i=0;i<n;i++){for(int j=0;j<n;j++)cout<<s[i][j]<<" ";cout<<endl;}
}
这里空空如也
有帮助,赞一个