[程式設計題] 黑白卡片
時間限制:1秒
空間限制:32768k
牛牛有n張卡片排成乙個序列.每張卡片一面是黑色的,另一面是白色的。初始狀態的時候有些卡片是黑色朝上,有些卡片是白色朝上。牛牛現在想要把一些卡片翻過來,得到一種交替排列的形式,即每對相鄰卡片的顏色都是不一樣的。牛牛想知道最少需要翻轉多少張卡片可以變成交替排列的形式。
輸入描述:
輸入包括乙個字串s,字串長度length(3 ≤ length ≤ 50),其中只包含'w'和'b'兩種字串,分別表示白色和黑色。整個字串表示卡片序列的初始狀態。
輸出描述:
輸出乙個整數,表示牛牛最多需要翻轉的次數。
輸入例子:
bbbw
輸出例子:
1解題思路:考慮與左側第乙個不變為基準找,和以右側第乙個不變為基準找,然後求count最小值
1 #include 2using
namespace
std;
3int
main()420
else
2127
else
2831}32
}33for(int i=length-2;i>=0;i--)
3439
else
4046
else
4750}51
}52if(count1>count2)
5356
else
5760}61
return0;
6263 }
只過了60%,改思路存在問題,不一定,左側第乙個或者右側第乙個一定不變
正確解題思路:最後排好的字串是以bw開頭或者以wb開頭,分別計算一遍,求最小的count即可
1 #include 2using
namespace
std;
3int
main()419
}20else
2126}27
}28for(int i=0;i)
2936}37
else
3843}44
}45if(count1>count2)
4649
else
5053}54
return0;
5556 }
2017 9 3 校內模擬T1卡片card
題意 有三種字母,可以用兩個不同的換乙個第三種字母,兩個相同的換乙個同種字母 即消去乙個 問最後剩下的字母。第一題顯然是if題,總體來說只有三種情況 1.有三種不同的 輸出 bgr 2.有兩種不同的 3.只有一種字母 輸出這個字母 極醜 1 include2 include3 include4 us...
4 序列交換 全國模擬(四)
程式設計題 序列交換 時間限制 1秒 空間限制 32768k 牛牛有乙個長度為n的整數序列s,羊羊要在牛牛的序列中選擇不同的兩個位置,然後交換這兩個位置上的元素。現在需要求出羊羊交換後可以得到的不同的序列個數。注意被交換的兩元素值可能相同 如序列,輸出1.羊羊必須交換僅有的兩個元素,得到序列。羊羊必...
CSP S全國模擬賽第四場 nan?
本來想搶三題的 rk1 無恥 最後發現 t2 好像還是慢了些,只搞了個 rk2 第一題隨便分析一下,發現一段區間中某個元素的貢獻次數就是 x 1 y 1 x 是他左邊的元素個數,y 是右邊 當然指的是詢問區間內 由於異或的性質,乙個元素最終貢獻次數膜 2 後結果一樣 那麼我們發現對於長度為偶數的區間...