OJ解决嵌套for循环超市问题

由于本人学识较浅,目前面对重复输出问题,只会使用嵌套for循环,可是有时嵌套for循环会有超时现象,请问有什么可以优化嵌套for循环的方法
输入
输入多组测试数据。
对于每组测试数据,输入矩形的长和宽n,m(0<n<=100,0<m<=100)。输入数据直到n或m为0时结束。
输出
输出想要画的图形。每组图形之间用一个空行隔开。

样例输入 Copy
4 3
4 4

样例输出 Copy

* * * *
*     *
*     *
*     *
* * * *

* * * * *
*       *
*       *
*       *
* * * * *

以下是我的代码

#include<iostream>
using namespace std;
int main()
{
    int n, m;
    while (1)
    {
        cin >> n >> m;
        if (n == 0 || m == 0)
            break;
        for (int i = 0; i <= n; i++)
        {
            for (int j = 0; j <= m; j++)
            {
                if (i == 0 || i == n)
                    cout << "* ";
                else if (j == 0 || j == m)
                    cout << "* ";
                else
                    cout << "  ";
            }
            cout << endl;
        }
        cout << endl;
    }
    return 0;
}

问题已解决

#include<iostream>
using namespace std;
int main()
{
    int n, m;
    while (cin>>n>>m)
    {
        if (n == 0 || m == 0)
            break;
        for (int i = 0; i <= n; i++)
        {
            for (int j = 0; j <= m; j++)
            {
                if (i == 0 || i == n)
                    cout << "* ";
                else if (j == 0 || j == m)
                    cout << "* ";
                else
                    cout << "  ";
            }
            cout << endl;
        }
        cout << endl;
    }
    return 0;
}

主要是你写错了,应该是i<n和j<m,后面是i==n-1和j==m-1
输入4,3,你实际画的是5,4啊

超时应该不是for()循环的问题,多组测试数据输入的要求,等待输入时也会超时,这么改下试试:

#include<iostream>
using namespace std;
int main()
{
    int n, m;
    do{
        cin >> n;
        if (n == 0)  break;
        cin >> m;
        if (m == 0)  break;
        for (int i = 0; i < n; i++) //for (int i = 0; i <= n; i++)
        {
            for (int j = 0; j < m; j++) //for (int j = 0; j <= m; j++)
            {
                if (i == 0 || i == n - 1) //if (i == 0 || i == n)
                    cout << "* ";
                else if (j == 0 || j == m - 1) //if (j == 0 || j == m)
                    cout << "* ";
                else
                    cout << "  ";
            }
            cout << endl;
        }
        cout << endl;
    } while (n != 0 && m != 0);
    return 0;
}