讨论 / 一直RUN~~ +WA85求解
·August· 2011-10-15 09:26:00
点我顶贴 收藏 删除
#include<iostream>

#include<string>

#include<cstdio>

using namespace std;

/*

struct map

{

int item,bu;//已吃棋子,已走步数

};

map a[10][10];//记录到当前位置吃子最大值

*/bool bb[10][10];//打标

char b[10][10];//记录棋盘

int k;//连走步数

int ca=0,cb=0;//初始坐标

int Max=0;

void dfs(int x,int y,int s,int kk)//横纵坐标,已走步数,已吃棋子数

{

// cout<<kk<<" ";

// cout<<x<<" "<<y<<" "<<s<<" "<<kk<<" ";

if(x>5||x<1||y<1||y>9)

return;

if(s==k+1)

return;

if(bb[x][y])

{

bb[x][y]=false;

kk++;

if(Max<kk) Max=kk;

dfs(x-1,y,s+1,kk);//前

dfs(x,y-1,s+1,kk);//左

dfs(x,y+1,s+1,kk);//右

bb[x][y]=true;

}

else

{

dfs(x-1,y,s+1,kk);//前

dfs(x,y-1,s+1,kk);//左

dfs(x,y+1,s+1,kk);//右

}

}

int main()

{

// freopen("in.txt","r",stdin);

int i,j;

cin>>k;

for(i=1;i<=5;i++)

{

for(j=1;j<=9;j++)

{

cin>>b[i][j];//scanf("%c",&b[i][j]);

if(b[i][j]=='L')

{ca=i;cb=j;}

if(b[i][j]=='K') bb[i][j]=true;

else bb[i][j]=false;

}

}

int m=0;

for(i=1;i=ca;i++)

for(j=1;j<=9;j++)

if(b[i][j]='K') m++;

if(k>9*ca+cb ||m==0) {cout<<m;return 0;}

dfs(ca,cb,0,0);

cout<<Max;

return 0;

}

查看更多回复
提交回复