题目描述
//由题意知,可以按两条对角线把二维数组分为四个部分,通过旋转来完成整个数组
include[HTML_REMOVED]
include[HTML_REMOVED]
using namespace std;
int main()
{
int n;
cin>>n;
while(n)
{
int a[n][n]; //先用数组储存,然后输出,而不是直接输出,因为数组的可修改性强!!!
for(int i=0;i<n/2+1;i++) //i<n/2+1 加1很重要!!
{
for(int j=i;j<n-i;j++)
{
a[i][j]=i+1; //上三角
a[j][i]=i+1; //左三角
a[n-1-i][j]=i+1; //下三角
a[j][n-1-i]=i+1; //右三角
//在对角线上的元素会被赋值两次
//当n为奇数时,最中间的数会被赋值四次
}
}
//输出 在while里面!!!
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
cout<<a[i][j]<<' ';
}
cout<<endl;
}
//多留一行空格
cout<<endl;
cin>>n;
}
return 0;
}
样例
blablabla
算法1
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla
算法2
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla