程式設計思維與實踐 CSP M3 補題

2021-10-06 04:45:32 字數 2145 閱讀 2200

思路:

簽到題,只要遍歷一遍陣列看一下有多少個i與i+1不相等的節點,在該節點數上加一即為答案。

思路:

該題只要使用兩個指針對矩陣進行兩次遍歷即可,一遍橫向遍歷,一遍縱向遍歷,遍歷過程中若遇到滿足條件的可以消除的位置,則在建立的標記陣列中的對應位置打上1(若直接修改原陣列會出現十字形無法識別的情況)。兩邊遍歷完畢後,輸出原陣列元素,但是當遍歷到標記陣列為1的位置則輸出0。

思路:

這題在剛做的時候採取的完全正向思維…一直在想如何找出所有回文串,然後通過回文串推出delicious的串。但是後來發現完全行不通,回文串還有個笨辦法:列舉,雖然不能做出來所有情況,但前幾個資料點可以過。但是如何由回文串推出delicious的串是怎麼想也沒有想出來。然後後來通過與同學討論,發現這題居然是採用逆向思維…人傻了.jpg

做法如下:

首先對於固定位數的字串,我們可以計算出其所有子串的個數。設該字串為n位,其子串個數為:n*(n-1)/2。之後我們要做的事就是計算出所有不符合delicious子串規則的子串。因為整個字串都只有a、b兩種字元,可以發現,所有不符合的都為以下情況:ab…(n個b)、(n個b)…ba、ba…(n個a)、(n個a)…ab。因此,我們只要找出所有符合以上情況的字串即可。尋找方法我採用的是定位兩個相同內容的字元,計算其中間的不同字元的個數或計算連續排列的相同字元個數等等…方法不再詳述,仔細思考便可得到。

**:

#include

#include

using

namespace std;

intmain()

if(n2

if(n1!=0)

final=final+2-

2*counta;

else

final=final+

1-counta;

else

if(n1!=0)

final=final+

1-counta;

}else

if(n2<=n-1)

final=final-

2*countb;

else

final=final-countb;

} n1=n2;n2=n1+1;

} cout<

}

程式設計思維與實踐 CSP M1 補題

a 咕咕東的奇遇 題意咕咕東是個貪玩的孩子,有一天,他從上古遺跡中得到了乙個神奇的圓環。這個圓環由字母表組成首尾相接的環,環上有乙個指標,最初指向字母a。咕咕東每次可以順時針或者逆時針旋轉一格。例如,a順時針旋轉到z,逆時針旋轉到b。咕咕東手裡有乙個字串,但是他太笨了,所以他來請求你的幫助,問最少需...

程式設計思維與實踐 CSP M1補題

題目描述 咕咕東是個貪玩的孩子,有一天,他從上古遺跡中得到了乙個神奇的圓環。這個圓環由字母表組成首尾相接的環,環上有乙個指標,最初指向字母a。咕咕東每次可以順時針或者逆時針旋轉一格。例如,a順時針旋轉到z,逆時針旋轉到b。咕咕東手裡有乙個字串,但是他太笨了,所以他來請求你的幫助,問最少需要轉多少次。...

程式設計思維與實踐 CSP M1補題

思路 這一題沒有太多難度,就是模擬實際的轉盤,運用好模運算,注意好細節即可。include char input 20000 char table 27 int main int word 0 int needle 0 int count 0 while input word 0 else word...