⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 2209.cpp

📁 杭电 acm部分代码 有兴趣的可以下载 谢谢
💻 CPP
字号:
#include <iostream>
#include <string>
using namespace std;
string in, tp;
void change(int i)
{
    if (in[i] == '1')
    {
        in[i] = '0';
    }
    else
    {
        in[i] = '1';
    }
}
int main()
{
    int i, num1, num2;
    bool ok1, ok2;
    while (cin >> in)
    {
		tp = in;
		num1 = 1;
		change(0);
		change(1);
        for (i = 1; i < in.length(); i++)
        {
			if (in[i - 1] == '1')
			{
				if (i != in.length() - 1)
				{
					num1++;
					change(i - 1);
					change(i);
					change(i + 1);
				}
				else
				{
					num1++;
					change(i - 1);
					change(i);
				}
			}
        }
        ok1 = true;
        for (i = 0; i < in.length(); i++)
        {
            if (in[i] == '1')
            {
                ok1 = false;
                break;
            }
        }
		in = tp;
		num2 = 0;
		for (i = 1; i < in.length(); i++)
		{
			if (in[i - 1] == '1')
			{
				if (i != in.length() - 1)
				{
                    num2++;
                    change(i - 1);
                    change(i);
                    change(i + 1);
				}
				else
				{
					num2++;
					change(i - 1);
					change(i);
				}
			}
		}
		ok2 = true;
        for (i = 0; i < in.length(); i++)
        {
            if (in[i] == '1')
            {
                ok2 = false;
                break;
            }
        }
		if (ok1 == false && ok2 == false)
		{
			printf("NO\n");
		}
		else
		{
			if (ok1 == true && ok2 == true)
			{
				printf("%d\n", num1 < num2 ? num1 : num2);
			}
			else if (ok1)
			{
				printf("%d\n", num1);
			}
			else if (ok2)
			{
				printf("%d\n", num2);
			}
		}
    }
    return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -