Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

在vs2017上运行就没有问题,运行结果输入输出没什么毛病啊,为什么在这里提交老是Wrong Answer呢?

Posted by 0121613570412 at 2018-05-20 19:23:30 on Problem 1753
#include <iostream>
#include <stdio.h>
using namespace std;

int chess[4][4];
int moves = 17;//4*4+1

//输入:创建棋盘
void buildBoard()
{
	char c;
	for (int i = 0; i < 4; i++)
	{
		for (int j = 0; j < 4; j++)
		{
			cin >> c;
			if (c == 'w')
				chess[i][j] = 0;
			else
				chess[i][j] = 1;
		}
	}
}

//单个棋子翻转
void turn(int x,int y)
{
	if (x >= 0 && y >= 0 && x, 4 && y, 4)
	{
		chess[x][y] = !chess[x][y];
	}
}

//棋盘翻转操作函数
void flip(int num)
{
	int i = num / 4;
	int j = num % 4;

	turn(i, j);
	turn(i + 1, j);
	turn(i - 1, j);
	turn(i, j + 1);
	turn(i, j - 1);
}

//判断棋盘是否全部一样
bool AllSame()
{
	int sum = 0;
	for (int i = 0; i < 4; i++)
	{
		for (int j = 0; j < 4; j++)
		{
			sum += chess[i][j];
		}
	}
	return !(sum % 16);
}

//深度优先搜索函数
void dfs(int pos, int num_flipped)
{
	if (AllSame())
	{
		if (num_flipped < moves)
			moves = num_flipped;
		return;
	}
	if (pos >= 16)
		return;
	dfs(pos + 1, num_flipped);
	flip(pos);
	dfs(pos + 1, num_flipped + 1);
	flip(pos);
}

int main()
{
	buildBoard();
	dfs(0, 0);
	if (moves == 17)
		cout << "Impossible" << endl;
	else
		cout << moves << endl;
	return 0;
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator