- 杜昊阳 的博客
春季思维训练课次一
- @ 2025-3-1 19:22:43
错题1章节六
错因:不会字符串转整型的方法.
正确思路:首先只有两种情况要搜查,通过字符串第一项来判断为年龄还是酒类,之后年龄用stoi()函数转型,酒类只需判断是否在列表内即可.
参考代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
string s,x[11]={"ABSINTH","BEER","BRANDY","CHAMPAGNE","GIN","RUM","SAKE","TEQUILA","VODKA","WHISKEY","WINE"};
int n,sum=0,ans=0;
cin>>n;
for(int i=0;i<n;i++){
cin>>s;
if(s[0]>='0'&&s[0]<='9'){
ans=stoi(s);
if(ans<18){
sum++;
}
}else{
for(int i=0;i<11;i++){
if(s==x[i]){
sum++;
}
}
}
}
cout<<sum;
return 0;
}
错题2章节六
错因:没有想通,实际上根本不要去前导零。
正确思路:算出实际长度后,比较,哪个大就哪个,一样的话逐位为比较。
参考代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
string a,b;
cin>>a;
cin>>b;
int la =a.size(),lb =b.size();
int i=0,j=0;
while(a[i]=='0')i++;
while(b[j]=='0')j++;
la-=i;lb-=j;
if(la>lb){
cout<<'>';
return 0;
}
if(la<lb){
cout<<'<';
return 0;
}
for(;i<a.size();i++,j++){
if(a[i]>b[j]){
cout<<'>';
return 0;
}
if(a[i]<b[j]){
cout<<'<';
return 0;
}
}
cout<<'=';
return 0;
}
错题3章节六
正确思路: