题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805091888906240
已AC代码:
比赛之前觉得自己字符串读取流不太熟悉,手机上看了一下古风排版的AC代码,用的gets(),就学习了一下,比赛死活过不了,WA了十几发,真的是烦。出来查了一下发现PTA上不支持gets,无语...... 折腾了半天心态炸了,个人成绩队里直接倒数,呜呜呜,早知道直接问队友了,gets误人啊啊啊啊
隔壁用gets写的都是神人,过不了还贴出来。。。
以下代码没问题可以AC,用的是cin.getline(),有兴趣的同学可以了解以下,很好解决有空格的字符输入。
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,num;
char s[1003];
char t[1000][1000];
cin>>n;
getchar();
cin.getline(s,1003);
int len = strlen(s);
int m = len/n;
if(len%n!=0) m++;
num=0;
for(int i=m-1;i>=0;i--)
{
for(int j=0;j<n;j++)
{
if(num<=len-1)
{
t[j][i] = s[num++];
}
else
{
t[j][i] =' ';
}
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
cout<<t[i][j];
}
cout<<endl;
}
return 0;
}
更新线----------------------------------------------------------------------------------------
今天用getline写了一段代码,测试了一下可以过,贴上来看看。个人感觉这个更实用一点吧,直接用字符串的。
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,num;
char t[1003][1003];
string s;
cin>>n;
getchar();
getline(cin,s);
int len = s.size();
int m =len/n;
if(len%n!=0) m++;
for(int i=m-1;i>=0;i--)
{
for(int j=0;j<n;j++)
{
if(num<len)
{
t[j][i]=s[num++];
}
else
{
t[j][i] = ' ';
}
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
cout<<t[i][j];
}
cout<<endl;
}
return 0;
}