后知后觉


私信TA

用户名:2015416576

访问量:11321

签 名:

人总是要学习的,颓废了好久,现在又要重新上路了.....

等  级
排  名 5883
经  验 1485
参赛次数 0
文章发表 12
年  龄 21
在职情况 学生
学  校 qfnu
专  业 计算机科学与技术

  自我简介:

小白一枚,希望能遇到大神带我刷题。

解题思路:


这个题我的题解就是纯计算出来的,每一行每一列都是找规律。首先先输入一个数,

对于每一行,写一个外循环,里面套着每一列的输出,也就是内循环,对于每一行的输出,

首先先计算第一个数,规律就是上一行的行数加上上一行那个数。  然后从第二列开始写内循环,

每一列的数就是上一列的那个数加上本列的列数加上上一行的行数。就找出来了。




注意事项:


唯一需要注意的就是格式控制输出,末尾不能有多余的空格,每一个输出最后别有换行,

这个只要你把规律找出来之后循环中稍微限制一下即可。




参考代码:

#include <iostream>

using namespace std;

int main()


{


    int n;

    while (cin>>n)

    {

        int temp = 0;

        int start = 1;

        for (int i=1; i<=n; i++)        //行

        {

            if(i<n)

            {

                start = i-1+start;                     //第一个数的规律,上一行的行数加上一行那个数,初始为1

                temp = start;                      //记录第一列,计算第二列时用到

                cout << start << " ";

                for (int j=2; j<=n-i+1; j++)       // 列

                {

                    if (j<n-i+1)

                    {

                        temp += j+i-1;                  //上一列那个数加上本列的列数加上上一行的行数

                        cout << temp << " ";

                    }

                    else

                    {

                        temp += j+i-1;

                        cout << temp;

                    }

                }

                cout << endl;

            }

            else

            {

                start = i-1+start;

                temp = start;

                cout << start;

                for (int j=2; j<=n-i+1; j++)       // 列

                {

                    if (j<n-i+1)

                    {

                        temp += j+i-1;

                        cout << temp << " ";

                    }

                    else

                    {

                        temp += j+i-1;

                        cout << temp;

                    }

                }

            }

        }

    }


    return 0;


}


 

0.0分

0 人评分

  评论区

  • «
  • »