文章

20

粉丝

224

获赞

57

访问

138.7k

头像
提问
P1261 北京大学机试题
发布于2021年12月7日 15:13
阅读数 6.0k

一开始的写的一份代码,没用getchar()把缓存里的回车干掉,并且是通过scanf("%d\n", &n)来获取字符串个数的输入,但是Output Limit Exceeded,就是下面会多出很多换行,不过我在本地上是正常的,代码如下。

#include<bits/stdc++.h>
using namespace std;

bool cmp(string s1, string s2) {
	return s1.length() < s2.length();
}

int main() {
	int n;
	while (scanf("%d\n", &n)) {
		string s;
		string *p = new string[n];
		int i = 0;
		for (i; i < n; ++i) {
			getline(cin, s);
			if (s.compare("stop") == 0) break;
			else p[i] = s;
		}
		sort(p, p + i, cmp);
		for (int j = 0; j < i; ++j) {
			cout << p[j] << endl;
		}
	} 
}

后面把scanf("%d\n", &n)换回cin >> n,然后在第一个getline前getchar()一次就通过了,代码如下。

#include<bits/stdc++.h>
using namespace std;

bool cmp(string s1, string s2) {
	return s1.length() < s2.length();
}

int main() {
	int n;
	while (cin >> n) {
		getchar();
		string s;
		string *p = new string[n];
		int i = 0;
		for (i; i < n; ++i) {
			getline(c...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发