1.
你决定写一本介绍好餐厅的书。
你想介绍的餐厅有n家 : 餐厅1,餐厅2,...餐厅n
1 ≤ n ≤ 100.
餐厅 i 在 Si 市,
你对每一家餐厅都有一个得分 pi
1 ≤ pi ≤ 100
没有两家餐馆得分相同。
您要按以下顺序介绍餐厅:
餐厅按其城市名称的字典顺序从小到大排列。如果同一个城市有多家餐厅,则按得分降序排列。按照书中介绍的顺序打印餐厅的编号。
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=110;
struct rest{
string name;//不是char哦
int score;
int dex;
}a[N];
bool cmp(rest x,rest y)
{
if(x.name==y.name) return x.score>y.score;
return x.name<y.name;//这个cmp直接返回我想要的排序结果
}
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i].name>>a[i].score;
a[i].dex=i;
}
sort(a+1,a+n+1,cmp);//直接用sort太好了吧,再定义一个cmp就我想怎么排都行,不用定死升序降序
for(int i=1;i<=n;i++)
cout<<a[i].dex<<endl;
}
2.
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int main()
{
char s[10010];//
while(~scanf("%s",s))
{
int len=strlen(s);
sort(s,s+len);
printf("%s\n",s);
while(next_permutation(s,s+len))//
printf("%s\n",s);
}
return 0;
}
notes2
next_permutation牛逼
char s[210]可以strlen(s)
string s不行
strlen(*char)参数必须是字符数组