問題描述:
給你乙個長度為n的01串。現在想讓你找出最長的01交替子串(子串可以不連續)比如:1010,0101是01交替的串,1101則不是。現在你可以把某乙個連續的區間進行翻轉,即0變1,1變0。問修改之後的最大01交替子串的長度是多少
問題分析:
看到題目後,不必使用暴力方法解決,可以從數學的角度出發,找規律。如果長度為n的原串中只有1個00(或11)出現,翻轉後可以得到最長n位的交替序列;如果有多個00(或11)出現,統計相鄰位不同的數count,可以得到最長count+2位的交替序列。也就是需要遍歷字串記錄相鄰兩位不相同的位數,例如10100010,其中有6位和它的相鄰位(前一位)不同,意味著有多個連續的00(或11),那麼答案為6+2;例如10101001,翻轉最後的01,答案為8,也就是n
**如下:
#include
#include
using
namespace std;
intmain()
shell程式設計例項A01
題目 編寫指令碼,提示使用者輸入使用者名稱和密碼,指令碼自動建立相應的賬戶及配置密碼。如果使用者不輸入賬戶名,則提示必須輸入賬戶名並退出指令碼 如果使用者不輸入密碼,則統一使用預設的 123456 作為預設密碼。bin bash read p input username username if z...
程式設計題 01串排序
給定乙個01串 僅由 0 或 1 組成的字串 現在想把這個數字串排序成 非遞減 有序序列,請問至少需要多少次交換 任意兩個位置交換 輸入描述 輸入資料第一行是乙個正整數t t 100 表示有t組測試資料 接下來的t行,每行給出01串。資料保證 50 的字串長度在 1,100 95 的字串長度在 1,...
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...