平方矩阵解答记录,解了好久,好多边界条件没有处理好

#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之后就增加,然后一行内的数,不能超过列数,列数又恰好等于循环次数,
所以我就想到一个自加循环,一个自减循环。

新的思路

posted @   E_sheep  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 提示词工程——AI应用必不可少的技术
· 地球OL攻略 —— 某应届生求职总结
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界
点击右上角即可分享
微信分享提示