经典指数          
原因
1259
浏览数
0
收藏数
 

股市有风险,投资需谨慎!为了更好地把握股票市场,证券公司决定研究股票涨跌幅度与时间段的关系。他们能为你提供一天中每小时整点时刻的股票涨跌幅度,它们都是整数,正数表示上涨,负数表示下跌。请你按照幅度变化的大小倒续输出时间。 输入描述: 输入包含多组数据。每一组数据一行,包含24个整数,分别代表00:00、01:00、……、23:00,这24个时间点的股票变化幅度。每个整数之间用一个空格隔开。 输出描述: 对应每一组数据,按问题描述的规则以一定顺序输出一行0、1、……、23,这24个时间。整数之间用空格隔开。如果有两个时刻涨跌幅度相同,则按照时间先后顺序输出。 输入例子: -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 10 11 121 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 输出例子: 23 0 22 1 21 2 20 3 19 4 18 5 17 6 16 7 15 8 14 9 13 10 12 1123 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

     举报   纠错  
 
切换
1 个答案
插入排序(随意选一个稳定的排序即可) #include #include #include using namespace std; struct info { int delta, time; }; vector solve(vector & A) { vector list(24); for (int i = 0; i < 24; ++i) { list[i].delta = abs(A[i]); list[i].time = i; } info temp; for (int i = 1; i < 24; i++) { temp = list[i]; int j; for (j = i; j > 0 && list[j - 1].delta < temp.delta; --j) { list[j] = list[j - 1]; } list[j] = temp; } return list; } int main() { int n; while (cin >> n && n) { vector delta(24, n); vector list; for (int i = 1; i < 24; ++i) cin >> delta[i]; list = solve(delta); for (int i = 0; i < 24; ++i) cout << (i ? " " : "") << list[i].time; cout << endl; } return 0; }
 
切换
撰写答案