我在做一道大模拟的题,想对结构体的数组排序,网上查了没有
尽量使用sort排序
#include <iostream>
#include <algorithm>
#include <map>
using namespace std;
map<string,int> cards;
string card[] = {"1M","2M","3M","4M","5M","6M","7M","8M","9M",
"1P","2P","3P","4P","5P","6P","7P","8P","9P",
"1S","2S","3S","4S","5S","6S","7S","8S","9S",
"E","S","W","N","B","F","Z",
"PASS","REVERSE","DOUBLE"};
struct people
{
int cardss[14];
sort(cardss,cardss + 13);
} ABCD[4];
string card_new[149];
int l = 0;
bool cmp(people a,people b)
{
return a.cardss[l] > b.cardss[++l];
//return a.cardss > b.cardss;
}
int now = 0;
void in_first()
{
char a[] = {'A','B','C','D'};
for(int i = 0;i < 13;i++)
{
for(int j = 0;j < 4;j++)
{
cout << a[j] << " IN " << card_new[now] << endl;
map<string,int> :: iterator itnum = cards.find(card_new[now]);
ABCD[j].cardss[i] = itnum->second;
now++;
}
}
return;
}
void in(int j)
{
char a[] = {'A','B','C','D'};
cout << a[j] << " IN " << card_new[now] << endl;
map<string,int> :: iterator itnum = cards.find(card_new[now]);
ABCD[j].cardss[13] = itnum->second;
now++;
}
void out(int j)
{
char a[] = {'A','B','C','D'};
cout << a[j] << " OUT " << card_new[now] << endl;
ABCD[j].cardss[13] = -1;
}
int main()
{
for(int i = 0;i < (sizeof(card)/sizeof(card[0]));i++)
{
cards[card[i]] = i;
}
for(int i = 0;i < 148;i++)
cin >> card_new[i];
in_first();
for(int i = 0;i < 4;i++)
{
for(int j = 0;j < 13;j++)
{
cout << ABCD[j].cardss[i] << " ";
}
cout<<endl;
}
int i = 0;
/*
while(!ifwin())
{
in(i);
out(i);
ifpeng();
if(i%4 == 0)
i = 0;
}
*/
return 0;
}
题目连接:https://www.luogu.com.cn/problem/P7147?%ra=link