ijcai ccf,CCF NOI1051 合影

 2023-11-18 阅读 17 评论 0

摘要:問題鏈接:CCF NOI1051 合影。 ijcai ccf?時間限制: 1000 ms ?空間限制: 262144 KB 題目描述? ? 小云和朋友們去爬香山,為美麗的景色所陶醉,想合影留念。如果他們站成一排,男生全部在左(從拍照者的角度),并按照從矮到高的順

問題鏈接:CCF NOI1051 合影




ijcai ccf?時間限制: 1000 ms ?空間限制: 262144 KB

題目描述?

? 小云和朋友們去爬香山,為美麗的景色所陶醉,想合影留念。如果他們站成一排,男生全部在左(從拍照者的角度),并按照從矮到高的順序從左到右排,女生全部在右,并按照從高到矮的順序從左到右排,請問他們合影的效果是什么樣的(所有人的身高都不同)?

輸入

? 第一行是人數n(2 <= n <= 40,且至少有1個男生和1個女生)。
? 后面緊跟n行,每行輸入一個人的性別(男male或女female)和身高(浮點數,單位米),兩個數據之間以空格分隔。

輸出

? n個浮點數,模擬站好隊后,拍照者眼中從左到右每個人的身高。每個浮點數需保留到小數點后2位,相鄰兩個數之間用單個空格隔開。

樣例輸入

6
male 1.72
male 1.78
female 1.61
male 1.65
female 1.70
female 1.56
樣例輸出

1.65 1.72 1.78 1.70 1.61 1.56

數據范圍限制

?

提示

?




問題分析

? 這是一個排序問題,排序后輸出結果即可

? 可以采用男女分別存儲排序,分別輸出。這里的給出的兩個程序就是采用這種方法。

? 另外一種方法是所有數據一起排序(需要帶上性別),然后兩次順序讀一遍(一次從大到小,另外一次從小到大),就可以得到想要的結果。這個思路的程序還沒有做。

程序說明

? 這里給出C語言程序和C++語言程序。它們的排序函數不一樣,需要注意。

? 想比較而言,C++語言的排序函數sort()使用起來比較簡潔。

要點詳解

  • 使用宏定義可以使得代碼可閱讀性增強。
  • C語言的排序函數是qsort(),需要留意用法。
  • C++語言的排序函數是sort(),需要留意用法。



參考鏈接:(略)。

100分通過的C語言程序:

#include <stdio.h>
#include <stdlib.h>#define N 40float male[N], female[N];int cmp1( const void *a , const void *b )
{return *(float *)a > *(float *)b ? 1 : -1;
}int cmp2( const void *a , const void *b )
{return *(float *)a < *(float *)b ? 1 : -1;
}int main(void)
{int n, nm, nf, i;char sex[7];scanf("%d", &n);for(i=0,nm=0,nf=0; i<n; i++) {scanf("%s%f", sex, &male[nm]);if(sex[0] == 'm')nm++;elsefemale[nf++] = male[nm];}qsort(male, nm, sizeof(float), cmp1);qsort(female, nf, sizeof(float), cmp2);for(i=0; i<nm; i++)printf("%.2f ", male[i]);for(i=0; i<nf; i++)printf("%.2f ", female[i]);printf("\n");return 0;
}


100分通過的C++語言程序:

#include <iostream>
#include <algorithm>
#include <cstdio>using namespace std;const int N = 40;float male[N], female[N];int main()
{int n, nm, nf;char sex[7];cin >> n;nm = nf = 0;for(int i=0; i<n; i++) {cin >> sex >> male[nm];if(sex[0] == 'm')nm++;elsefemale[nf++] = male[nm];}sort(male, male + nm, less<float>());sort(female, female + nf, greater<float>());for(int i=0; i<nm; i++)printf("%.2f ", male[i]);for(int i=0; i<nf; i++)printf("%.2f ", female[i]);printf("\n");return 0;
}



版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/4/175986.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息