【1031 HDU】Design T-Shirt
阿新 • • 發佈:2018-11-09
題目連結:http://acm.hdu.edu.cn/showproblem.php?pid=1031
題意:有n個人給設計中的m個元素評價滿意度,然後設計者會找出其中k各元素加到它的設計中,輸出前k個元素的序號,並且用非遞增的順序輸出。
思路:把各個元素的綜合滿意度進行排序,找出前k個滿意度最高的元素,然後將它們的序號進行排序,然後從大到小輸出。
My DaiMa:
#include <iostream> #include <stdio.h> #include <algorithm> using namespace std; struct person { double a; int flag;//flag用來存元素序號 }s[103]; bool cmp1(person p1, person p2) { return p1.a > p2.a;//按結構體中滿意度元素進行排序 } bool cmp2(person p1, person p2) { return p1.flag > p2.flag;//按結構體中序號元素進行排序 } int main() { int n, m, t; double b; while (cin >> n >> m >> t) { for (int i = 0; i < m; i++) { s[i].a = 0; s[i].flag = i + 1; } for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { cin >> b; s[j].a += b;//求出每個元素的綜合滿意度 } } sort(s, s + m, cmp1);//先把它們按滿意度排序 sort(s, s + t, cmp2);//再把其前k個的序號排一下序 for (int i = 0; i < t - 1; i++) cout << s[i].flag << " "; cout << s[t - 1].flag << endl; } }