大佬,最后一道题这么做可以吗?很多样例做了测试,和你的答案一样。
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
	vector<int>g{1,1,1,0};
	vector<int>j{1,1,0,0};
	int sg = 1,sj = 1,sx = 0;
	int n = g.size();
	for(int i=1; i<g.size(); i++)
	{
		int tmpg = sg;
		int tmpj = sj;
		int tmpx = sx;
		if(g[i] && j[i])
		{
			sg = max(tmpx,tmpj) + 1;
			sj = max(tmpx,tmpg) + 1;
		}else if(!g[i] && !j[i]){
			if(tmpg == tmpj)
			{
				sx = (tmpg + tmpj) / 2;
			}else{
				sx = max(tmpg,tmpj);
			}
		}else if(g[i]){
			sg = max(tmpx,tmpj) + 1;
		}else{
			sj = max(tmpx,tmpg) + 1;
		}
	} 
	cout<<n - max(max(sg,sx),sj);
    return 0;
}