对于输入的 n。
输出一个二维的 n * n 矩阵。
输出矩阵的第一行 1 ~ n
输出矩阵的第一列 1 ~ n
其他位置 a[i][j] = a[i - 1][j - 1]
//cpp
#include <iostream>
using namespace std;
const int N = 110;
int a[N][N];
int main()
{
int n;
cin >> n;
while (n)
{
for (int i = 0; i < n; i++)
{
a[i][0] = i + 1;//第一行
a[0][i] = i + 1;//第一列
}
for (int i = 1; i < n; i++)
{
for (int j = 1; j < n; j++)
{
a[i][j] = a[i - 1][j - 1];//其他位置,a[i][j] = a[i - 1][j - 1]
}
}
for (int i = 0; i < n; i++)//输出矩阵
{
for (int j = 0; j < n; j++)
{
cout << a[i][j] << " ";
}
cout << endl;
}
cout << endl;
cin >> n;
}
}
两个 for 循环, 时间复杂度为 O(n^2)。
有问题直接评论即可。
觉得不错,欢迎点赞。
跟我写的一样,嘿嘿;
可不可以是对角线全是1 其余位置a[i][j]=a[j][i]
不可以的,a【i】【j】和a【j】【i】必须先确定一个
牛逼通俗易懂!!!!
为什么要最后还cin>>n
表示结束,提干有说
发现大哥
#include[HTML_REMOVED]
#include[HTML_REMOVED]
using namespace std;
const int N=110;
int a[N][N];
int main(void)
{
int n;
while(scanf(“%d”,&n)&&n!=0){
for(int b=1,c=0,k=0,d=n;b<=n;b,c,d–,k){
for(int i=c,j=1;i<d,j<=d;i,j){
a[k][i]=j;
a[i][k]=j;
}
}
for(int i=0;i<n;i){
for(int j=0;j<n;j){
cout<<a[i][j]<<” “;
if(j+1==n){
cout<<endl;
}
}
}
cout<<endl;
}
}
根据作者大大的for (int i = 0; i < n; i)
{
a[i][0] = i + 1;//第一行
a[0][i] = i + 1;//第一列
}这一行代码给我了灵感我直接按照他的思维的本质用一个嵌套循环解决了
跟我一样hh
太强了orz