有n個硬幣(6<=n<=20000)全部正面朝上排成一排,每次將其中5個硬幣翻過來放在原位置,直到最後全部硬幣翻成反面朝上為止。試程式設計找出步數最少的翻法,輸出最少步數及翻法。
從鍵盤輸入乙個正整數n(6<=n<=20000),表示硬幣的數量。
第1行:乙個整數,表示最少步數
第2行至最後一行:先是乙個整數,表示步驟序號(從0開始編號),後接乙個":",再接當前硬幣的狀態(用乙個整數表示正面朝上的硬幣的個數)
6 (開始:6個硬幣正面朝上)
0:6 (第0步結果:6個硬幣正面朝上)
1:1 (第1步結果:1個硬幣正面朝上)
2:4 (第2步結果:4個硬幣正面朝上)
3:3 (第3步結果:3個硬幣正面朝上)
4:2 (第4步結果:2個硬幣正面朝上)
5:5 (第5步結果:5個硬幣正面朝上)
6:0 (第6步結果:0個硬幣正面朝上)
6 (最少用6步實現全部反面朝上)
只輸出最少次數,其變化過程僅作參考
hint告訴我們題面有誤……
設x[i]為第i個狀態有幾個正面,再加乙個判重,bfs切掉
code:
#include
#include
#include
#include
#include
using
namespace std;
bool a[
20001];
int n;
struct f o,o2;
queue p;
void
bfs()if
(a[o2.x]==0
)//判重}}
}}intmain()
翻幣問題 ssl 1457
題意 description 有n個硬幣 6 n 20000 全部正面朝上排成一排,每次將其中5個硬幣翻過來放在原位置,直到最後全部硬幣翻成反面朝上為止。試程式設計找出步數最少的翻法,輸出最少步數及翻法。input 從鍵盤輸入乙個正整數n 6 n 20000 表示硬幣的數量。output 第1行 乙...
SSL 1457 翻幣問題
有n個硬幣 6 n 20000 全部正面朝上排成一排,每次將其中5個硬幣翻過來放在原位置,直到最後全部硬幣翻成反面朝上為止。試程式設計找出步數最少的翻法,輸出最少步數及翻法。從鍵盤輸入乙個正整數n 6 n 20000 表示硬幣的數量。第1行 乙個整數,表示最少步數 第2行至最後一行 先是乙個整數,表...
翻幣問題 題解
有n個硬幣 6 n 20000 全部正面朝上排成一排,每次將其中5個硬幣翻過來放在原位置,直到最後全部硬幣翻成反面朝上為止。試程式設計找出步數最少的翻法,輸出最少步數及翻法。從鍵盤輸入乙個正整數n 6 n 20000 表示硬幣的數量。第1行 乙個整數,表示最少步數 第2行至最後一行 先是乙個整數,表...