问题标题: 酷町堂:@龙舟

0
0
已解决
被禁言 何冯成
何冯成
中级光能
中级光能

3983

急急急!!!

本人的0分代码:

#include<bits/stdc++.h>
using namespace std;
string a[110000];
int n;
int sz(string s){
	int cnt=0;
	for(int i=0;i<s.size();i++){
		if(s[i]>='a'&&s[i]<='z'){
			cnt++;
		}
	}
	return cnt;
}
bool cmp(string x,string y){
	if(sz(x)!=sz(y))
	return sz(x)>sz(y);
	return x<y;
}
int main(){
string b;
cin>>n;
getline(cin,a[0]);
for(int i=1;i<=n;i++){
	getline(cin,a[i]);
}
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++){
	cout<<a[i]<<endl;
}
return 0;
}

找错!!!

---------------------------------------------------------------

不要整段代码

何冯成在2020-03-29 08:26:59追加了内容

@刘廷钰

还是0分:

#include<bits/stdc++.h>
using namespace std;
string a[110000];
int n;
int sz(string s){
    int cnt=0;
    for(int i=0;i<s.size();i++){
        if(s[i]>='a'&&s[i]<='z'){
            cnt++;
        }
    }
    return cnt;
}
bool cmp(string x,string y){
    if(sz(x)!=sz(y))
    return x<y;
    return x<y;
}
int main(){
string b;
cin>>n;
getline(cin,a[0]);
for(int i=1;i<=n;i++){
    getline(cin,a[i]);
}
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++){
    cout<<a[i]<<endl;
}
return 0;
}

 

何冯成在2020-03-29 13:09:19追加了内容

@龙舟

 你禁言多少天


1
已采纳
龙舟
龙舟
高级光能
高级光能

我来啦!~~

if(s[i]>='a'&&s[i]<='z')改成if(s[i]>='A'&&s[i]<='Z'||s[i]>='a'&&s[i]<='z')

return sz(x)>sz(y);
    return x<y;

改成两个都是<

ac!!

望采纳! 

0
刘廷钰
刘廷钰
初级守护
初级守护

我一开始也是这样写的,应该两个都是x<y

刘廷钰在2020-03-28 22:18:05追加了内容

还有这题样例好像有问题

刘廷钰在2020-03-28 22:19:24追加了内容
bool cmp里两个都应该是 return x<y;
0
0
张帆
张帆
中级天翼
中级天翼

1th:字母不可能只是小写,又有可能是大写

2nd:cin>>n以后要读入一个换行符,加上getchar();

3rd:你下标是从0开始的,sort以及输出循环都是把下标当从一开始得了

4th:cmp函数里第一个return是按字母的个数,不是按字典序,的改成用sz<sz这种格式

   PS:最好用结构体。

0
李致远
李致远
高级光能
高级光能

你的结构体内部有问题

还有这题样例有BUG

0
我要回答