HDU - 2209 翻纸牌游戏(贪心)
2017-08-26 10:21
405 查看
HDU - 2209 翻纸牌游戏
当前的这张牌是否翻转取决于它的前一张牌是否朝上,如果朝上,不翻转,朝下,则翻转,这是贪心的思想,但是,对于第一张牌来说,它的前面没有牌了,所以可以翻转,也可以不翻转,分两种情况来判断,参考的别人的代码
#include<stdio.h>
#include<algorithm>
#include<string.h>
using namespace std;
const int INF=0x3f3f3f3f;
char s[21];
int p[21];
int dfs(int i,int len,int num)
{
if(i==len) return p[i-1]?INF:num;
if(p[i-1]) p[i-1]=0,p[i]=!p[i],p[i+1]=!p[i+1],++num;
return dfs(i+1,len,num);
}
int main(void)
{
while(scanf("%s",s)!=EOF)
{
int len=strlen(s);
for(int i=0;i<len;i++)
p[i]=s[i]-'0';
//翻转第一张牌
p[0]=!p[0];
p[1]=!p[1];
int ans=INF;
ans=min(ans,dfs(1,len,1));
for(int i=0;i<len;i++)
p[i]=s[i]-'0';
//不翻转第一张牌
ans=min(ans,dfs(1,len,0));
if(ans==INF) printf("NO\n");
else printf("%d\n",ans);
}
return 0;
}
相关文章推荐
- hdu 2209 翻纸牌游戏 贪心
- hdu 2209 翻纸牌游戏【贪心】
- hdu 2209 翻纸牌游戏 搜索+贪心
- HDU 2209 - 翻纸牌游戏(贪心)
- HDU 2209 翻纸牌游戏(DFS)
- hdu 2209 翻纸牌游戏 (双向bfs+位运算判重)
- hdu 2209 翻纸牌游戏
- hdu 2209 -- 翻纸牌游戏
- hdu 2209 翻纸牌游戏
- hdu 2209 翻纸牌游戏
- HDU2209--翻纸牌游戏
- HDU 2209 翻纸牌游戏
- HDU 2209 翻纸牌游戏 By Assassin 模拟
- HDU 2209 翻纸牌游戏
- hdu 2209 翻纸牌游戏
- hdu 2209 翻纸牌游戏
- HDU 2209 翻纸牌游戏
- HDU 2209 翻纸牌游戏
- hdu 2209 翻纸牌游戏 模拟||bfs
- hdu 2209——翻纸牌游戏