有一種紙牌遊戲,很有意思,給你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張紙牌,一字排開,紙牌有正反兩面,開始的紙牌可能是一種亂的狀態 有些朝正,有些朝反 現在你需要整理這些紙牌。但是麻煩的是,每當你翻一張紙牌 由正翻到反,或者有反翻到正 時,他左...