1201 翻紙牌遊戲 ZCMU

2021-08-22 07:13:11 字數 984 閱讀 3540

有一種紙牌遊戲,很有意思,給你n張紙牌,一字排開,紙牌有正反兩面,開始的紙牌可能是一種亂的狀態(有些朝正,有些朝反),現在你需要整理這些紙牌。但是麻煩的是,每當你翻一張紙牌(由正翻到反,或者有反翻到正)時,他左右兩張紙牌(最左邊和最右邊的紙牌,只會影響附近一張)也必須跟著翻動,現在給你乙個亂的狀態,問你能否把他們整理好,使得每張紙牌都正面朝上,如果可以,最少需要多少次操作。

有多個case,每個case輸入一行01符號串(長度不超過1000),1表示反面朝上,0表示正面朝上。

對於每組case,如果可以翻,輸出最少需要翻動的次數,否則輸出no。

no對於第一組測試資料,無論怎樣操作,都無法完成.

對於第二組測試資料,只需反轉一次最右面的牌即可

對於第三組測試資料,需要翻轉第一張牌和最後一張牌

每一次翻都會影響左右的牌,那麼我們肯定是先把前面的牌確定好了,再去決定後面的牌怎麼翻,一張牌翻不翻取決於它之前那張牌的狀態。考慮第一張翻與不翻的情況,最後取最小值。

#include#include#includeusing namespace std;

#define max 1005

int turn[max],nturn[max];

char s[max];

int turn(int n) //翻第一張牌的情況

}if(turn[n-1]==1) cnt=-1;

return cnt;

}int nturn(int n) //不翻第一張牌的情況

}if(nturn[n-1]==1) cnt=-1;

return cnt;

}int main()

for(i=0;icturn=turn(len);

cnturn=nturn(len);

if(cturn==-1&&cnturn==-1)

printf("no\n");

else

}return 0;

}

翻紙牌遊戲

題目描述 有一種紙牌遊戲,很有意思,給你n張紙牌,一字排開,紙牌有正反兩面,開始的紙牌可能是一種亂的狀態 有些朝正,有些朝反 現在你需要整理這些紙牌。但是麻煩的是,每當你翻一張紙牌 由正翻到反,或者有反翻到正 時,他左右兩張紙牌 最左邊和最右邊的紙牌,只會影響附近一張 也必須跟著翻動,現在給你乙個亂...

翻紙牌遊戲

翻紙牌遊戲 time limit 3000msmemory limit 32768kb64bit io format i64d i64u submit status practice hdu 2209 description 有一種紙牌遊戲,很有意思,給你n張紙牌,一字排開,紙牌有正反兩面,開始的紙...

翻紙牌遊戲一

看到乙個紙牌演算法,第乙個看著有意思的程式設計了。有好幾種程式設計方式,我說一下簡單的一種。有一種紙牌遊戲,很有意思,給你n張紙牌,一字排開,紙牌有正反兩面,開始的紙牌可能是一種亂的狀態 有些朝正,有些朝反 現在你需要整理這些紙牌。但是麻煩的是,每當你翻一張紙牌 由正翻到反,或者有反翻到正 時,他左...