問題描述:
沙灘按照線型擺放著n個大小不一的球形石頭,已知第i個石頭的半徑為ri,且不存在兩個石頭有相同的半徑。為了使石頭的擺放更加美觀,現要求擺放的石頭的半徑從左往右依次遞增。因此,需要對一些石頭進行移動,每次操作可以選擇乙個石頭,並把它放在剩下n−1個石頭在最左邊或最右邊。問最少需要操作多少次才能將這n個石頭的半徑變成公升序?
問題解析:
這是乙個排序問題,且每一次操作只能將當前石頭放到最左端或者最右端,使用c++的vector儲存序列,保持原序列中最大遞增1的子串行不變,移動其他石頭。那麼只需求出最大遞增1的子串行長度,再用總長度減去子串行長度,即為需移動數目。
直接上**:
#include
#include
using
namespace std;
intmain()
}if(temp > max)
max = temp;
} cout << n - max << endl;
return0;
}
shell程式設計例項 石頭剪子布遊戲
input function judge 如果user變數未被定義過或為空,則賦值為0 let if numuser eq numcomp then echo 本局平局 elif numuser eq 0 then if numcomp eq 2 then echo 本局你贏!let cntuser...
C 程式設計例項
例3.12 用下面公式求 的近似值。4 1 1 3 1 5 1 7 直到最後一項的絕對值小於10 7為止。根據給定的演算法很容易編寫程式如下 複製純文字新視窗 include include include using namespace std int main pi pi 4 cout pi i...
C 程式設計例項之翻轉01串
問題描述 給你乙個長度為n的01串。現在想讓你找出最長的01交替子串 子串可以不連續 比如 1010,0101是01交替的串,1101則不是。現在你可以把某乙個連續的區間進行翻轉,即0變1,1變0。問修改之後的最大01交替子串的長度是多少 問題分析 看到題目後,不必使用暴力方法解決,可以從數學的角度...