lsmCC 发表于 2023-10-9 12:17:48

回型矩阵问题

题目链接:https://ac.nowcoder.com/acm/contest/19306/1026?&headNav=acm#include <bits/stdc++.h>
using namespace std;
int a;
int main()
{
    int n,s=1,r=1,l=1,now=2;
    a=1;
    cin>>n;
    while(now<=n*n)
    {
      while(a==0&&r+1<=n)
      {
            a=now++;
      }
      while(a==0&&l+1<=n)
      {
            a=now++;
      }
      while(a==0&&r-1>=0)
      {
            a=now++;
      }
      while(a==0&&l-1>=0)
      {
            a=now++;
      }
      
    }
    for(int i=1;i<=n;i++)
    {
      for(int j=1;j<=n;j++)
      {
            cout<<a<<" ";
      }
      cout<<endl;
    }
   
      

   
}
指正哪个地方错了,输出哪个4到5 的时候不是有一个空格吗,那个位置该怎么解决呢

isdkz 发表于 2023-10-9 12:18:05

在这段代码中,输出4和5之间缺少了一个空格的问题可以通过在输出数字后判断是否为最后一个数字,如果不是则输出一个空格来解决。具体代码实现如下:

for(int i=1;i<=n;i++)
{
    for(int j=1;j<=n;j++)
    {
      cout<<a[ i];
      if(j!=n) // 判断是否为最后一个数字
            cout<<" "; // 如果不是最后一个数字,则输出一个空格
    }
    cout<<endl;
}

Mike_python小 发表于 2023-10-9 12:18:14

这份代码中输出的确存在问题,当第4行第5列的数为两位数时,其余位置会多一个空格,而该位置没有空格。可以通过以下方式进行调整:

在输出时,可以通过判断当前数字位数来决定是否输出空格。如果当前数字为一位数,那么在输出后再输出一个空格;如果当前数字为两位数,那么直接输出。具体实现如下:


for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= n; j++) {
      if (a < 10) { // 当数字为一位数时,在输出后再输出一个空格
            cout << a << " ";
      } else { // 否则直接输出
            cout << a;
      }
    }
    cout << endl;
}


通过这种方法输出时,就可以保证每个数字与其后面的空格间隔相同,不会因为位数不同而引起错位问题。

球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}
页: [1]
查看完整版本: 回型矩阵问题