平方矩阵解答记录,解了好久,好多边界条件没有处理好
#include<cstdio>
#include <iostream>
#include<algorithm>
using namespace std;
const int N=120;
int b;
int c;
int f[N];
int tmp=99999;
//int flag=0;
int main(){
while(1){
cin>>b;
if(b==0)return 0;
for(int j=1;j<=b;j++){
int tmp=j;
int flag=0;
for(int z=1;z<=b;) {
if (j>1&&tmp >=1&&flag==0) {//不是第一行,并且第一个数是大于1的就会自减到1,只要减少到1,为了防止下面的自加到大于1,又会触发条件,防止再次进入,就要设置一个flag让自减不会因下面自加而重复运行
cout << tmp << " ";
if(tmp==1)//直到减少到1时
{
//cout<<"Sdadsasdasd"<<endl;
flag=1;//设置标记,一旦达到1次1,这一段就不在运行
z++;
continue;
}
tmp--;//每次都把大于1的数减一
z++;
continue;
}
//else{
if(j>1&&tmp==1){
tmp++;//如果是不是第一行(证明是从上面自减到1的),因为上面已经输出过了1次1,所以先增一个
}
cout <<tmp<< " ";
tmp++; //每行输出一次,就自增,等着输出下一个
z++;//保证每次输出一个之后就会,统计上
//}
}
cout<<endl;
}
cout << endl;
}
return 0;
}
我愚笨,真的只能想到,寻找规律,一行内的数,减到1之后就增加,然后一行内的数,不能超过列数,列数又恰好等于循环次数,
所以我就想到一个自加循环,一个自减循环。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 提示词工程——AI应用必不可少的技术
· 地球OL攻略 —— 某应届生求职总结
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界