iT邦幫忙

2025 iThome 鐵人賽

DAY 21
0
自我挑戰組

cpe30天練習系列 第 21

cpe練習day21

  • 分享至 

  • xImage
  •  

今天是練習cpe的A mid-summer nights dream題目

程式碼

#include <bits/stdc++.h>
using namespace std;

int main()
{
	int n;
	while(cin >> n)
	{
		int a[n];
		for(int i = 0; i < n; i++)
		{
			cin >> a[i];
		}
		sort(a, a + n);
		int m1 = a[(n-1) / 2];
		int m2 = a[n / 2];
		int count = 0;
		for(int i =0; i < n; i++)
		if(a[i] == m1 || a[i] == m2)
		{
			count++;
		}
		cout << m1 << " " <<count << " " << m2 - m1 + 1 << endl;
	}
   return 0;
}

解題方向

  • sort(a, a + n); -> 將陣列 a 從小到大排序。因為這題需要找到「中位數」,排序後才好處理。
  • int m1 = a[(n-1) / 2];int m2 = a[n / 2]; ->如果n是奇數,m1 == m2,就是唯一的中位數。如果n是偶數,可能有兩個中位數區間:m1 和 m2。
  • m2 - m1 + 1 -> 可能的中位數有幾種選擇。如果n是奇數,這個值會是1,如果n是偶數,可能大於1

上一篇
cpe練習day20
下一篇
cpe練習day22
系列文
cpe30天練習22
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言