SSL 1457 翻幣問題

2021-10-12 19:16:34 字數 1084 閱讀 5293

有n個硬幣(6<=n<=20000)全部正面朝上排成一排,每次將其中5個硬幣翻過來放在原位置,直到最後全部硬幣翻成反面朝上為止。試程式設計找出步數最少的翻法,輸出最少步數及翻法。

從鍵盤輸入乙個正整數n(6<=n<=20000),表示硬幣的數量。

第1行:乙個整數,表示最少步數

第2行至最後一行:先是乙個整數,表示步驟序號(從0開始編號),後接乙個":",再接當前硬幣的狀態(用乙個整數表示正面朝上的硬幣的個數)

6
6
不要問,這就是一道bfs水題那是怎麼tle的

好吧,這題也是bfs,有六種拓展方式:

正+5,反-5

正+3,反-3

正+1,反-1

正-1,反+1

正-3,反+3

正-5,反+5

注意拓展條件

#include

#include

#include

using

namespace std;

queue <

int> a,b;

int n,t,r,q,z;

bool ok[

10010];

void

bfs(

) ok[t]=1

;for

(int i=

5;i>=

0;i--)}

}}intmain()

//蒟蒻表示注釋無能為力

#include

#include

#include

using

namespace std;

queue <

int> a,b;

int n,t,r,q,akioi[6]

=;bool ok[

20010];

//訪問判斷

void

bfs(

)for

(int i=

0;i<=

5;i++)}

}}intmain()

翻幣問題 ssl 1457

題意 description 有n個硬幣 6 n 20000 全部正面朝上排成一排,每次將其中5個硬幣翻過來放在原位置,直到最後全部硬幣翻成反面朝上為止。試程式設計找出步數最少的翻法,輸出最少步數及翻法。input 從鍵盤輸入乙個正整數n 6 n 20000 表示硬幣的數量。output 第1行 乙...

SSLOJ 1457 翻幣問題

有n個硬幣 6 n 20000 全部正面朝上排成一排,每次將其中5個硬幣翻過來放在原位置,直到最後全部硬幣翻成反面朝上為止。試程式設計找出步數最少的翻法,輸出最少步數及翻法。從鍵盤輸入乙個正整數n 6 n 20000 表示硬幣的數量。第1行 乙個整數,表示最少步數 第2行至最後一行 先是乙個整數,表...

翻幣問題 題解

有n個硬幣 6 n 20000 全部正面朝上排成一排,每次將其中5個硬幣翻過來放在原位置,直到最後全部硬幣翻成反面朝上為止。試程式設計找出步數最少的翻法,輸出最少步數及翻法。從鍵盤輸入乙個正整數n 6 n 20000 表示硬幣的數量。第1行 乙個整數,表示最少步數 第2行至最後一行 先是乙個整數,表...