| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
感动!~首次一次AC,暴力,差一点超时#include<iostream>
#include<algorithm>
using namespace std;
char a[5][5];
int open;
int flag[20];
void change(int i, int j) {
for (int k = 0; k < 4; k++)
{
if (a[i][k] == '-')
{
a[i][k] = '+';
open--;
}
else
{
a[i][k] = '-';
open++;
}
}
for (int k = 0; k < 4; k++)
{
if (k==i)
{
continue;
}
if (a[k][j] == '-')
{
a[k][j] = '+';
open--;
}
else
{
a[k][j] = '-';
open++;
}
}
}
int solve(int times, int x) {
if (open==16)
{
return times;
}
if (x == 16)
{
return 17;
}
int i = x / 4;
int j = x % 4;
change(i, j);
int minn = solve(times + 1, x + 1);
change(i, j);
int t = solve(times, x + 1);
if (minn >t)
{
minn = t;
flag[x] = 0;
}
else if (t > minn)
{
flag[x] = 1;
}
return minn;
}
int main() {
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
{
cin >> a[i][j];
if (a[i][j]=='-')
{
open++;
}
}
}
if (open==16)
{
cout << 0;
}
else
{
cout << solve(0, 0) << endl;
for (int i = 0; i < 16; i++)
{
if (flag[i]==1)
{
cout << i / 4 + 1 << ' ' << i % 4 + 1 << endl;
}
}
}
system("pause");
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator