题解
2024-04-16 15:25:32
发布于:上海
3阅读
0回复
0点赞
第三题:
读题:
给你一些星系中的星球,让你按照发现顺序给同一星系里的星球编号,最后按照输入顺序输出编号
思路:
这道题目考查的是结构体,在此给出我的思路:
创建galaxy结构,成员有发现时间、输入序号(以便于原数组通过下标找到该星球)、星球编号和所属星系
旧的结构体列表赋值后,在新的一个结构体列表中经行排序,并且按照年代来排序,可以借助一个桶(bucket)来存放各个星系中的星球发现数,最后写入序号后在原数组中进行更改
代码:
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
const int N=1e5+6;
struct galaxy{
int num,time,id;
string s="";
}gs[N],y[N];
int bucket[N],n,m;
bool cmp(galaxy a,galaxy b){
return a.time<b.time;
}int main(){
cin>>n>>m;
for(int i=0;i<m;i++){
cin>>gs[i].num>>gs[i].time;
gs[i].id=i;
y[i]=gs[i];
}sort(gs,gs+m,cmp);
string temp;
for(int i=0;i<m;i++){
bucket[gs[i].num]++;
temp=to_string(gs[i].num);
for(int a=0;a<6-temp.size();a++)gs[i].s.append(1,'0');
gs[i].s.append(temp);
temp=to_string(bucket[gs[i].num]);
for(int a=0;a<6-temp.size();a++)gs[i].s.append(1,'0');
gs[i].s.append(temp);
//cout<<gs[i].s<<endl;
y[gs[i].id]=gs[i];
}for(int i=0;i<m;i++)cout<<y[i].s<<endl;
return 0;
}
这里空空如也
有帮助,赞一个