乙個n位的數,去掉其中的k個數,使剩下的數最小

2021-09-10 17:22:28 字數 696 閱讀 5075

思路一:

分析:求一共n位,求其中的m位組成的數最小。那麼這個m位的數,最高位應該在原數的最高位到第m位區間找,要不然就不能當第m位了。

比如乙個數:8 4 7 9 6 3 5 2

n = 8, k = 3;

1.第乙個數應在 8 —— 3 間(含8和3)選最小的,應為3

2.第二個數應在5——2 間(含5和2)選最小的,應為5

3.第三個數則為 2;

所以最小數為 352;

在比如 k = 4;

1.第乙個數在 8——6 間選,應為4

2.第二應在 7——3 間選,應為3

其餘同上。

最小為 4352;

**實現:

#includevoid find_min(int a,int beg,int fin,int a_len)

; int i = 1;

size_t n;

n = sizeof(a)/sizeof(int);

int k = 2;

while(k) //只要沒有乾掉 k 個數,迴圈就得進行

else

i++;

}for (i=0;iprintf("%d",a[i]);

return 0;

}

輸入n個整數,找出其中最小的K個數

輸入n個整數,找出其中最小的k個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4,牛客網題目鏈結 使用最大堆實現,1.構建大小為k的最大堆 2.如果新元素小於當前最大堆的堆頂元素,則替換堆頂,調整最大堆 3.題目要求按照從小到大順序輸出最小的k個數,所以最後需要...

輸入n個整數,找出其中最小的K個數。

題目 輸入n個整數,找出其中最小的k個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4,思路 可以使用排序 這裡我採用快排,獲取到乙個有順序的陣列,然後獲取它的前n個 先使用快排排序 public static void quicksort int arr,in...

N個數中的前k個

題目描述 n個數,列印出重複次數最多的前十個 方法 無序容器 優先順序佇列 資料結構 雜湊單重對映表 優先順序佇列 步驟 1 遍歷所有的數,放進雜湊表中 2 找到前十個重複率最高的 3 列印 include include include include include includeusing n...