NYOJ 851尋找最大數 二 ,棧貪心!

2021-07-15 03:39:38 字數 923 閱讀 7107

時間限制:

1000 ms  |  記憶體限制:

65535 kb

難度:2 描述

給你乙個數字n(可能有字首0)。

要求從高位到低位,進行進棧出棧操作,是最後輸出的結果最大。

輸入

有多組測試資料。

對於每組資料,輸入乙個n(0<=n<=10^100).

輸出輸出棧操作後的結果。

樣例輸入

789

75948

樣例輸出

987

98457

提示(用0表示進棧,1表示出棧)

789 輸出 987 過程是 000111

75948 輸出 98457 過程是 0001001111

輸出結果應該和輸入位數相同

剛剛的思路輸出9404857;明顯錯了,不過利用棧進出順序確實可以得到9485740;所以在原先的思路上再加一步:如果當前位置上的元素是後面所有元素中最大的則輸出(前提)並且如果棧頂元素比當前元素的後一位後面的所有元素都大則輸出棧頂元素,重複判斷棧頂元素;如果當前元素後面有比當前元素更大的則將當前元素入棧;

#includeusing namespace std;

const int n=1000;

char a[n],b[n];//理解了b陣列的意思就可以做了;

int main()

continue;

}q.push(a[i]);

}while(!q.empty())

printf("\n");

}return 0;

}

學長給出的樣例果然厲害,只是每次做題考慮不全,樣例只是所有情況中的一種;還有太急躁,等不及將思路理清就直接寫,白浪費時間!

NYOJ 尋找最大數

時間限制 1000 ms 記憶體限制 65535 kb 難度 2描述 請在整數 n 中刪除m個數字,使得餘下的數字按原次序組成的新數最大,比如當n 92081346718538,m 10時,則新的最大數是9888輸入 第一行輸入乙個正整數t,表示有t組測試資料 每組測試資料佔一行,每行有兩個數n,m...

nyoj尋找最大數(三)

尋找最大數 三 時間限制 1000 ms 記憶體限制 65535 kb 難度 2 描述給出乙個整數n,每次可以移動2個相鄰數字上的數字,最多移動k次,得到乙個新的整數。求這個新的整數的最大值是多少。輸入多組測試資料。每組測試資料佔一行,每行有兩個數n和k 1 n 10 18 0 k 100 輸出每組...

nyoj 尋找最大數集合

nyoj 448 尋找最大數 時間限制 1000 ms 記憶體限制 65535 kb 難度 2 描述請在整數 n 中刪除m個數字,使得餘下的數字按原次序組成的新數最大,比如當n 92081346718538,m 10時,則新的最大數是9888 輸入第一行輸入乙個正整數t,表示有t組測試資料 每組測試...