吐个槽,这题真是各种坑。
#include <iostream>
#include <vector>
#include <string>
#include <string.h>
#include <stdio.h>
using namespace std;
int main()
{
vector<string> puzzle;
string temp;
int count=1;
outside: puzzle.clear();//
while(getline(cin,temp))
{
if(temp=="")
continue;
puzzle.push_back(temp);//第一行
getline(cin,temp);//第二行
puzzle.push_back(temp);
getline(cin,temp);//第三行
puzzle.push_back(temp);
getline(cin,temp);//第四行
puzzle.push_back(temp);
getline(cin,temp);//第五行
puzzle.push_back(temp);
/*
for(vector<string>::iterator i=puzzle.begin();i<puzzle.end();i++)
{
cout<<*i;
}
*/
int i,j;
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
if(puzzle[i][j]==' ')
break;
}
if(j!=5)
break;
}
cout<<i<<" "<<j;
int c=1;
while((c=getchar())!=EOF&&c!='0')
{
switch(c)
{
case 'A':
{
if(i==0)
{
cout<<"Puzzle #"<<count<<":\n";
count++;
cout<<"This puzzle has no final configuration\n";
goto outside;
}
else
{
puzzle[i][j]=puzzle[i-1][j];
puzzle[i-1][j]=' ';
i=i-1;
}
break;
}
case 'B':
{
if(i==4)
{
cout<<"Puzzle #"<<count<<":\n";
count++;
cout<<"This puzzle has no final configuration\n";
goto outside;
}
else
{
puzzle[i][j]=puzzle[i+1][j];
puzzle[i+1][j]=' ';
i=i+1;
}
break;
}
case 'L':
{
if(j==0)
{
cout<<"Puzzle #"<<count<<":\n";
count++;
cout<<"This puzzle has no final configuration\n";
goto outside;
}
else
{
puzzle[i][j]=puzzle[i][j-1];
puzzle[i][j-1]=' ';
j=j-1;
}
break;
}
case 'R':
{
if(j==4)
{
cout<<"Puzzle #"<<count<<":\n";
cout<<"This puzzle has no final configuration\n";
count++;
goto outside;
}
else
{
puzzle[i][j]=puzzle[i][j+1];
puzzle[i][j+1]=' ';
j=j+1;
}
break;
}
}
}
cout<<"Puzzle #"<<count<<":\n";
count++;
for(vector<string>::iterator i=puzzle.begin();i<puzzle.end();i++)
{
cout<<*i<<endl;
}
goto outside;
}
}