原题:点击打开链接
假如想提交代码可以用这个:点击打开链接
题目大意:按一个按钮时,跟它相邻的两个按钮状态也会反转。如果你按的是最左或者最右边的按钮,该按钮只会影响到跟它相邻的一个按钮。问两个按钮序列的最少按多少个
思路:贪心算法,每种按钮只会按或不按,二者肯定只有一种满足要求,确定了之后讨论下一个按钮(其实只要一个循环就可以,一开始以为是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)


2322

被折叠的 条评论
为什么被折叠?



