2015年2月8日 星期日

P2A練習02/05

P2A 2015/02/05練習:讀入n個數,問數字相同的個數最多幾個?

以下為第(2)種方法的程式碼,另附測試檔 a.txt b.txt c.txt 
a共110個數字{有5個5} 、  b共10000個數字{有6個100}、 c共10000個數字{有8個98765432}

/*
p2a 02/05 練習:若有 N 個數 A[0],A[1],.....A[N-1],求重複最多的個數
例 有10個數 1,2,3,4,5,2,3,4,5,2,最多為3個 {註:2有3個}
本題(1) 若A[0]~A[N-1]的範圍不大<10^6的話{假設為M},可用空間換取時間,直接宣告C[M]來計數即可,
  (2) 但若範圍太大{0~10^9 },而N不太大<10^4的話,可將A陣列排序後,以下列程式碼來計算最多個數
(3) 也可以使用類似 b05的解法
*/
#include <iostream>
#include <algorithm>  // 使用 sort 需用
using namespace std;
int main()
{
  int i,n, a[10000];
  cin >> n ;
  for(i=0; i<n; ++i)  cin >> a[i];    // 讀入 a 陣列
  sort(a,a+n);                       // 將 a 陣列由小至大排序
// 計算連續相同的數字
  int ans = 1;
  for(i=1;i<n-1;++i)
  {
if( a[i] == a[i-ans] ) ++ ans;
// 當ans為1 若a[i]與前a[i-1]相同,則 ans+1就是長度為2
// 當ans為2 若a[i]與前a[i-2]相同,則 ans+1就是長度為3
// 當ans為 k 若a[i]與前a[i-k]相同,則 ans+1就是長度為 K+1
      //  若沒有比 k 長的相同數字, ans 不會再加
  }
cout << "最多相同數共 " << ans << "個\n";
  return 0;
}
/*
範例輸入
10
1 2 3 4 5 2 3 4 5 2
範例輸出
3
*/

Related Posts:

  • Z2AVB模擬測驗(2018/3/7)預訂題綱:3/7需最少完成3題評分 1給一個正整數,找出含在其中的質數  例2379內含的質數有2,3,7,23,79共5個 2數字系統轉換十進位轉X進位  例 123轉5進位為403 3身份證檢查碼產生 4分數四則運算 5計程車費計算 6騎士步(馬步有8種走法): (x-2,y-1)、(x-1,… Read More
  • To P1 TAB (資概期末-3)Cpp P1 TAB之期末 C++變化題範例 1/9更新:有想考友誼數、水仙花數、分數相加化簡 、 孿生質數    哦! 一、1061_u3-1_prime 輸入一個正整數 n , 0<n<46000 ,若 n 為質數則印出 Prime,否則印出… Read More
  • P1TAB小考模卷 填充計算題:每格3分(9~16各算2格) 1.16位元無號整數可表示的範圍為:__________ ~ _______________ 2.32位元以2的補數存整數可表示的範圍為:__________ ~ _______________ 3.將容量單位{EB,GB,KB,MB,TB}由大至… Read More
  • Z2AY7M3 練習-7 (17題題單及參考-4) 4/10(一)測驗題單 (題目名加上連結的表示範例完成) 假設由文字方塊輸入,呼叫 Function MyPxx( S As String ) As String後傳回要輸出的字串 以下只有M5P11附主程式部份,其餘類似 105模擬 M5P11 數學問題:質數 … Read More
  • P1TAB(106下之1) 數字系統、a031~a034 106下普1資概-第1次小考模擬(a) 1.16位元無號整數可表示的範圍為:__________ ~ _______________ 2.32位元以2的補數存整數可表示的範圍為:__________ ~ _______________ 3.將二進位整數(&… Read More

0 意見:

張貼留言