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

2021-10-04 02:57:14 字數 1934 閱讀 4403

a - 咕咕東的奇遇

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

解題思路

對於每個字元求一遍

#include

#include

#include

using

namespace std;

intmain()

else r= current - target;

if(target < current)

else l= target - current;

if(r

=r;else sum+

=l; current = target;

}printf

("%d\n"

,sum)

;return0;

}

b.

題意

解題思路

把每天的生煎數分為奇偶兩類,一開始mod2先變成0 1兩種數,因為每一天都必須滿足,所以從頭列舉,記一下上一天有沒有領券即可,中間出現0但有券或者最後一天還剩券則no 否則yes。

#include

#include

using

namespace std;

int n;

intmain()

}if(ct ==1)

int i =0;

for(

; i < n; i++

)else

break;}

}if(i==n)

printf

("yes\n");

else

printf

("no\n");

return0;

}

c - 可怕的宇宙射線

解題思路:dfs記憶化搜尋。覆蓋區域為300*300.

用乙個四位陣列vis[x][y][cnt][d],表示(x,y)在第cnt次**,d方向延伸。以向右為x方向正方向,向上為y方向正方向。剛開始對於每次**後的方向不知道怎麼表示,後面發現每次**的方向是往原方向偏45度。將方向從(0,1)開始逆時針轉一圈,存在dir陣列中。每次**後的方向為(d+1)%8,(d+7)%8。為了避免射線交叉重複,用mp陣列來記錄已經到達的點的座標。遞迴終止條件是層數大於n,此時return。

#include

using

namespace std;

int vis[

330]

[330][

31][8

],mp[

330]

[330

],n,a[35]

,ans;

int dir[8]

[2]=

,,,,

,,,}

;void

dfs(

int x,

int y,

int cnt,

int d)

dfs(x,y,cnt+1,

(d+1)%

8);dfs

(x,y,cnt+1,

(d+7)%

8);}

intmain()

程式設計思維與實踐 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...

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

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