【技巧题】贪心 2017大数据研究中心夏令营上机考试 D:特殊密码锁

原题:点击打开链接

假如想提交代码可以用这个:点击打开链接

题目大意:按一个按钮时,跟它相邻的两个按钮状态也会反转。如果你按的是最左或者最右边的按钮,该按钮只会影响到跟它相邻的一个按钮。问两个按钮序列的最少按多少个

思路:贪心算法,每种按钮只会按或不按,二者肯定只有一种满足要求,确定了之后讨论下一个按钮(其实只要一个循环就可以,一开始以为是dfs就搭了个递归的框架。。。)

做题碰到了一些问题:

1、需要修改字符的不能使用string类型,要用char数组
2、strlen(sch);//求字符串长度
3、memcpy(char* tar,char * src,int n);//从src拷贝n个字符到tar中;使用之前要先memset
4、使用memcpy时注意数组下标!!

 

#include<iostream>
#include<string.h>
#include<string>
using namespace std;
char tar[35],s[35];
int ans=100,len;

void changebit(int c)
{
	if (c-1>=0)	s[c-1]='1'-(s[c-1]-'0');
	if (c+1<len)	s[c+1]='1'-(s[c+1]-'0');
	s[c]='1'-(s[c]-'0');//居然忘了。。。
}

bool dfs(char * src,int c,int count)//讨论第c个按钮
{
	bool flag=false;
	char t1[31],t2[31];
	if (c-2>=0)
	{
		memset(t1,0,sizeof(t1)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值