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

2021-10-04 04:03:50 字數 1771 閱讀 3459

思路:

這一題沒有太多難度,就是模擬實際的轉盤,運用好模運算,注意好細節即可。

**:

#include

char input[

20000];

char table[27]

;int

main()

int word=0;

int needle=0;

int count=0;

while

(input[word]!=0

)else}}

word++;}

printf

("%d"

,count)

;}

思路:**:

#include

int num[

150000];

intmain()

int remain=0;

for(

int i=

0;i1;i++

)else}if

((num[n-1]

-remain)%2

!=0)else

}

思路:

這題的思路非常明了,就是用bfs在二維陣列內模擬過程。要注意的點乙個是方向的表示,乙個是如何模擬射線的運動過程,還有乙個就是要想到在乙個狹小的空間**線**30次即2的30次方束不同射線,這種時候應該有大量的重複,所以應該要使用記憶化搜尋。這裡我採用了結構體來表示射線**的那個節點,用於模擬過程。因此記憶化搜尋時也只需記錄結構體即可。

**:

#include

#include

#include

using

namespace std;

int mark[

501]

[501];

int disx[8]

=;int disy[8]

=;struct arrow};

mapbool

> vis;

queue q;

int num[35]

;map<

int,

int> map1;

map<

int,

int> map2;

intmain()

arrow tmp1;arrow tmp2;

tmp1.direction=map1[d]

;tmp1.split=ts+

1;tmp1.x=tx+num[ts+1]

*disx[map1[d]

];tmp1.y=ty+num[ts+1]

*disy[map1[d]];

tmp2.direction=map2[d]

;tmp2.split=ts+

1;tmp2.x=tx+num[ts+1]

*disx[map2[d]

];tmp2.y=ty+num[ts+1]

*disy[map2[d]];

q.push

(tmp1)

; q.

push

(tmp2);}

int count=0;

for(

int i=

0;i<

501;i++)}

cout<}

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

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

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

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

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

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