PAT乙级1027 打印沙漏(测试点0、3格式错误)

1027 打印沙漏
坑点,天坑,每一行的字符后面是没有空格的。

#include <iostream>
#include <string>
#include <vector>
#include <unordered_map>

using namespace std;

int main()
{
    
    
    int cur = 3;
    vector<int> nums;
    unordered_map<int,int> mp;
    mp[1] = 1;
    nums.push_back(1);
    while(nums.back()<=1000){
    
    
        nums.push_back(nums.back()+2*cur);
        mp[nums.back()] = cur;
        cur +=2;
    }
    int n;
    char c;
    cin>>n>>c;
    int id;
    for(int i=0;i<nums.size();i++){
    
    
        if(nums[i]>n){
    
    
            id=i-1;
            break;
        }
    }
    cur = mp[nums[id]];
    int cnt = 0;
    vector<string> ans;
    while(cur >= 1){
    
    
        ans.push_back(string(cnt,' ')+string(cur,c));//这里,不能再加上string(cnt,' ')
        cur-=2;
        cnt++;
    }
    for(int i=(int)ans.size()-2;i>=0;i--) ans.push_back(ans[i]);
    for(int i=0;i<ans.size();i++) cout<<ans[i]<<endl;
    cout<<n-nums[id]<<endl;
    return 0;
}

比如说当输入数据为

1000 *

结果为

*******************************************
 *****************************************
  ***************************************
   *************************************
    ***********************************
     *********************************
      *******************************
       *****************************
        ***************************
         *************************
          ***********************
           *********************
            *******************
             *****************
              ***************
               *************
                ***********
                 *********
                  *******
                   *****
                    ***
                     *
                    ***
                   *****
                  *******
                 *********
                ***********
               *************
              ***************
             *****************
            *******************
           *********************
          ***********************
         *************************
        ***************************
       *****************************
      *******************************
     *********************************
    ***********************************
   *************************************
  ***************************************
 *****************************************
*******************************************
33

每一行的字符前面是空格,但是字符后面不是空格,否则测试点0、3是格式错误。

猜你喜欢

转载自blog.csdn.net/weixin_44321570/article/details/113923882