6 条题解
-
3
解析
直接对数据排序,数字的位置就被更新了,不妨使用结构体,给每个数字赋予两个关键词:数字大小、位置。 这样排序后即使结构体顺序改变了,输出保存的成员变量———位置,就可以得到答案。
就像在班级中按照女生前男生后的顺序排队,但你本身的性别并不会因为排序而改变。
题解
#include <iostream> #include <algorithm> using namespace std; struct Num { int num, id; } a[2010]; bool cmp(Num x, Num y) { return x.num < y.num; } int main() { int n; cin >> n; for (int i = 1; i <= n; i++) { cin >> a[i].num; a[i].id = i; } sort(a + 1, a + 1 + n, cmp); for (int i = 1; i <= n; i++) cout << a[i].id << " "; return 0; }
#include <iostream> using namespace std; int n; int a[1005]; int b[1005]; int main() { cin >> n; for (int i = 1; i <= n; i++) { cin >> a[i]; b[i] = i; } //用选择排序对下标排序 for (int i = 1; i <= n; i++) for (int j = i + 1; j <= n; j++) if (a[b[i]] > a[b[j]]) swap(b[i], b[j]); for (int i = 1; i <= n; i++) cout << b[i] << " "; return 0; }
-
1
yasuo👀️
困难的结构体
#include <iostream> #include <algorithm> struct shu{int id,shu;}num[1005]; int yasuo(shu a,shu b){return a.shu<b.shu;} int main(){ int n,numn; std::cin>>n; for(int i=0;i<n;i++){std::cin>>numn; num[i]={i,numn};} std::sort(num,num+n,yasuo); for(int i=0;i<n;i++) std::cout<<num[i].id+1<<" ";}
-
1
#include <iostream> #include <algorithm> using namespace std; //因为有多个数据,还有对应的下标,所以考虑用结构体做题 struct num { int n,index; //n:对应数值,index:对应下标 }; num a[1005];//有多个数据,所以创个数组 //要用排序,先写好cmp bool cmp(num a,num b) { return (a.n < b.n);//从小到大排序 } int main() { int n; cin >> n; //获取数据 for(int i = 1;i <= n;i++) { cin >> a[i].n; a[i].index = i; } //排序 sort(a + 1,a + n + 1,cmp); //输出 for(int i = 1;i <= n;i++) cout << a[i].index << ' '; return 0; }
-
0
#include<bits/stdc++.h> using namespace std; int main() { int o[10005], n[10005], a;//定义旧数组(没排序)和新数组(用于排序)一个 cin >> a; for(int i = 1; i <= a; i++) cin >> n[i];//先将输入的所有值存在新数组里 for(int i = 1; i <= a; i++) o[i] = n[i];//再将新数组的每个值赋给旧数组中 sort(n+1, n+1+a);//新数组排序,旧数组仍是原来的值 for(int i = 1; i <= a; i++)//遍历就数组的每个值 { for(int j = 1; j <= a; j++)//判断旧数组的每个值与新数组的每个值是否相等,新数组对应的下标并输出 { if(o[i] == n[j]) cout << j << " "; } } return 0; }
- 1
信息
- ID
- 341
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 3
- 标签
- 递交数
- 744
- 已通过
- 380
- 上传者