10377 - Maze Traversal
Moderator: Board moderators
so if i use cin befor gets(),the problem will accured,and scanf("%d %d",&a,&b) too
but if i use scanft("%d %d\n",&a,&b),then the problem will be ok.but a new problem will accured.if i use judge sentence like "if(a>b)",the judge will not effect until the gets() after the judge get a number
It's so weird
but if i use scanft("%d %d\n",&a,&b),then the problem will be ok.but a new problem will accured.if i use judge sentence like "if(a>b)",the judge will not effect until the gets() after the judge get a number
It's so weird
"Learning without thought is useless;thought without learning is dangerous."
"Hold what you really know and tell what you do not know -this will lead to knowledge."-Confucius
"Hold what you really know and tell what you do not know -this will lead to knowledge."-Confucius
10377~~With always W.A...
I alwas got W.A
Well~I don't know where is wrong??
Can anybody help me???
Well~I don't know where is wrong??
Can anybody help me???
Code: Select all
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int a,m,n,i,j,k,maze[63][63]={0},d;
char b[0];
scanf("%d",&a);
for(i=1;i<=a;i++)
{
d=1;
scanf("%d %d",&m,&n);
scanf("%c",&b);
for(j=1;j<=m;j++)
{
for(k=1;k<=n;k++)
{
scanf("%c",&b);
if(b[0]==42)
maze[j][k]=1;
if(b[0]==32)
maze[j][k]=0;
}
scanf("%c",&b);
}
scanf("%d %d",&n,&m);
scanf("%c",&b);
while(b[0]!=81)
{
if(b[0]==82)
d=(1+d)%4;
if(b[0]==76)
d=(3+d)%4;
if(b[0]==70)
{
switch (d%4)
{
case 1:
if(maze[n-1][m]==0)
{n--;}
break;
case 2:
if(maze[n][m+1]==0)
{m++;}
break;
case 3:
if(maze[n+1][m]==0)
{n++;}
break;
case 0:
if(maze[n][m-1]==0)
{m--;}
break;
}
}
scanf("%c",&b);
}
printf("%d %d",n,m);
switch (d%4)
{
case 1:
printf(" N\n\n");
break;
case 2:
printf(" E\n\n");
break;
case 3:
printf(" S\n\n");
break;
case 0:
printf(" W\n\n");
break;
}
}
return 0;
}
plz help me
my program got WA plz help me
// acm 10377
// acm 10377
Code: Select all
#include <iostream>
using namespace std;
struct rob
{
int x;
int y;
int f;
};
const int NMAX = 1000;
const char orent[] = "NESW";
char a[NMAX][NMAX];
char temp[NMAX];
int ROW, COLUMN;
rob robot;
main()
{
int q, i;
char c;
cin >> q;
while (q-- != 0)
{
cin >> ROW >> COLUMN;
cin.getline(temp, NMAX);
for (i = 0; i < ROW; i++)
cin.getline(a[i], NMAX);
cin >> robot.x >> robot.y;
robot.f = 0;
robot.x--;
robot.y--;
cin.get(c);
while (c != 'Q')
{
if (c == 'R')
robot.f = (robot.f + 1) % 4;
if (c == 'L')
robot.f = (robot.f == 0) ? 4 : robot.f - 1;
if (c == 'F')
{
if (robot.f == 0 && a[robot.x - 1][robot.y] == ' ')
robot.x--;
if (robot.f == 1 && a[robot.x][robot.y + 1] == ' ')
robot.y++;
if (robot.f == 2 && a[robot.x + 1][robot.y] == ' ')
robot.x++;
if (robot.f == 3 && a[robot.x][robot.y - 1] == ' ')
robot.y--;
}
cin.get(c);
}
cout << ++robot.x << " " << ++robot.y << " " << orent[robot.f] << '\n';
if (q != 0)
cout << '\n';
}
return 0;
}
----------
10377 WA
Code: Select all
special input??
#include <iostream>
#include <cstdio>
#include <string>
using namespace std ;
char C[4]={'N','E','S','W'} ;
int go(char map[100][100],int &x,int &y,int now){
if(C[now%4]=='N')
if(map[x-1][y]==' ')
x--;
if(C[now%4]=='E')
if(map[x][y+1]==' ')
y++;
if(C[now%4]=='S')
if(map[x+1][y]==' ')
x++;
if(C[now%4]=='W')
if(map[x][y-1]==' ')
y--;
}
int main(){
int times,i ,x ,y , j ,nx=0,ny=0;
char input[500],a ;
cin >> times ;
cout << endl ;
while (times>0){
int out=0,now=0 ;
cin >> x >> y ;
char map[100][100]={0} ;
getchar();
for(i=0;i<x;i++)
gets(map[i]);
cin >> nx >> ny ;
while( out==0 && gets(input) ){
for(i=0;i<strlen(input);i++){
switch(input[i]){
case 'F' :
go(map,nx,ny,now) ;
break ;
case 'L' :
now-- ;
break ;
case 'R' :
now++ ;
break ;
case 'Q' :
out=1 ;
break ;
}
}
}
cout << nx+1 << " " << ny+1 << " " <<C[now%4] << endl << endl ;
times-- ;
}
}
-
- New poster
- Posts: 13
- Joined: Wed Apr 29, 2009 11:37 am
- Location: Barcelona
Re: 10377 - Maze Traversal
I think I'm not understanding this problem in a right way. Take into account the input, my final position doesn't match with the output:
Code: Select all
Removed after accepted
Born to be wild
-
- New poster
- Posts: 1
- Joined: Tue Aug 16, 2011 6:02 pm
Re: 10377 - Maze Traversal
I got WA,
Code: Select all
#include <iostream>
using namespace std;
int main() {
int n = 0, row = 0, col = 0, sR = 0, sC = 0;
char direct = 'N', c;
cin >> n;
while (1) {
if (n == 0)
break;
n--;
cin >> row >> col;
char maze[row][col];
for (int i = 0; i < row; ++i) {
for (int j = 0; j < col; ++j) {
cin >> maze[i][j];
}
}
cin >> sR >> sC;
sR -= 1;
sC -= 1;
while (cin >> c) {
if (c == 'Q'){
cout << sR << " " << sC << " " << direct << endl;
}
else if (c == 'R') {
if (direct == 'N')
direct = 'E';
else if (direct == 'E')
direct = 'S';
else if (direct == 'S')
direct = 'W';
else if (direct == 'W')
direct = 'N';
} else if (c == 'L') {
if (direct == 'N')
direct = 'W';
else if (direct == 'W')
direct = 'S';
else if (direct == 'S')
direct = 'E';
else if (direct == 'E')
direct = 'N';
} else if (c == 'F') {
if (direct == 'E') {
if (maze[sR][sC + 1] != '*' && sC + 1 < col) {
sC += 1;
}
} else if (direct == 'S') {
if (maze[sR + 1][sC] != '*' && sR + 1 < row) {
sR += 1;
}
} else if (direct == 'W') {
if (maze[sR][sC - 1] != '*' && sC - 1 >= 0) {
sC -= 1;
}
} else if (direct == 'N') {
if (maze[sR - 1][sC] != '*' && sR - 1 >= 0) {
sR -= 1;
}
}
}
}
}
return 0;
}
-
- New poster
- Posts: 16
- Joined: Fri Nov 15, 2013 9:33 pm
Re: 10377 - Maze Traversal
Getting WA please help !!!
Code: Select all
#include<iostream>
#include<sstream>
#include<string>
#include<cstdlib>
#include<vector>
#include<map>
#include<queue>
#include<stack>
#include<cmath>
#include<cctype>
#include<set>
#include<bitset>
#include<algorithm>
#include<list>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<ctype.h>
using namespace std;
#define print1(a) cout<<a<<endl
#define print2(a,b) cout<<a<<" "<<b<<endl
#define print3(a,b,c) cout<<a<<" "<<b<<" "<<c<<endl
#define oo (1<<30)
#define PI 3.141592653589793
#define pi (2.0*acos(0.0))
#define ERR 1e-5
#define PRE 1e-8
#define SZ(s) ((int)s.size())
#define LL long long
#define ISS istringstream
#define OSS ostringstream
#define VS vector<string>
#define VI vector<int>
#define VD vector<double>
#define VLL vector<long long>
#define SII set<int>::iterator
#define SI set<int>
#define mem(a,b) memset(a,b,sizeof(a))
#define fr(i,a,b) for(i=a;i<=b;i++)
#define frn(i,a,b) for(i=a;i>=b;i--)
#define fri(a,b) for(i=a;i<=b;i++)
#define frin(a,b) for(i=a;i>=b;i--)
#define frj(a,b) for(j=a;j<=b;j++)
#define frjn(a,b) for(j=a;j>=b;j--)
#define frk(a,b) for(k=a;k<=b;k++)
#define frkn(a,b) for(k=a;k>=b;k--)
#define frl(a,b) for(l=a;l<=b;l++)
#define frln(a,b) for(l=a;l>=b;l--)
#define REP(i,n) for(i=0;i<n;i++)
#define EQ(a,b) (fabs(a-b)<ERR)
#define all(a,b,c) for(int I=0;I<b;I++) a[I] = c
#define CROSS(a,b,c,d) ((b.x-a.x)*(d.y-c.y)-(d.x-c.x)*(b.y-a.y))
#define sqr(a) ((a)*(a))
#define FORE(i,a) for(typeof((a).begin())i=(a).begin();i!=(a).end();i++)
#define typing(j,b) typeof((b).begin()) j=(b).begin();
#define BE(a) a.begin(),a.end()
#define rev(a) reverse(BE(a));
#define sorta(a) sort(BE(a))
#define pb push_back
#define popb pop_back
#define mp make_pair
#define round(i,a) i = ( a < 0 ) ? a - 0.5 : a + 0.5;
#define makeint(n,s) istringstream(s)>>n
#define inpow(a,x,y) int i; a=x;fri(2,y) a*=x
#define cntbit(mask) __builtin_popcountll(mask)
//0 based print
#define debug_array(a,n) for(int i=0;i<n;i++) cerr<<a[i]<<" "; cerr<<endl;
#define debug_matrix(mat,row,col) for(int i=0;i<row;i++) {for(int j=0;j<col;j++) cerr<<mat[i][j]<<" ";cerr<<endl;}
#define csprnt printf("Case %d: ", ++cas);
#define mod 1000000007
#define eulerconstant 0.5772156649
template<class T1> void debug(T1 e){cout<<e<<endl;}
template<class T1,class T2> void debug(T1 e1,T2 e2){cout<<e1<<"\t"<<e2<<endl;}
template<class T1,class T2,class T3> void debug(T1 e1,T2 e2,T3 e3){cout<<e1<<"\t"<<e2<<"\t"<<e3<<endl;}
template<class T1,class T2,class T3,class T4> void debug(T1 e1,T2 e2,T3 e3,T4 e4){cout<<e1<<"\t"<<e2<<"\t"<<e3<<"\t"<<e4<<endl;}
template<class T1,class T2,class T3,class T4,class T5> void debug(T1 e1,T2 e2,T3 e3,T4 e4,T5 e5){cout<<e1<<"\t"<<e2<<"\t"<<e3<<"\t"<<e4<<"\t"<<e5<<endl;}
template<class T1,class T2,class T3,class T4,class T5,class T6> void debug(T1 e1,T2 e2,T3 e3,T4 e4,T5 e5,T6 e6){cout<<e1<<"\t"<<e2<<"\t"<<e3<<"\t"<<e4<<"\t"<<e5<<"\t"<<e6<<endl;}
template<class T> void debug(vector< vector<T> > e,int row,int col){int i,j;REP(i,row) {REP(j,col) cout<<e[i][j]<<" ";cout<<endl;} cout<<endl;}
template<class T> void debug(vector< basic_string<T> > e,int row,int col){int i,j;REP(i,row) {REP(j,col) cout<<e[i][j];cout<<endl;} cout<<endl;}
template<class T> void debug(T e[110][110],int row,int col){int i,j;REP(i,row) {REP(j,col) cout<<e[i][j]<<" ";cout<<endl;}}
template<class T> string toString(T n){ostringstream oss;oss<<n;oss.flush();return oss.str();}
int toInt(string s){int r=0;istringstream sin(s);sin>>r;return r;}
bool isVowel(char ch){ch=tolower(ch);if(ch=='a' || ch=='e' || ch=='i' || ch=='o' || ch=='u')return true;return false;}
bool isUpper(char c){return c>='A' && c<='Z';}
bool isLower(char c){return c>='a' && c<='z';}
/***************************************************code starts from here*************************************************************************************************/
int cRow,cCol,face;
int row,col;
char maze[100][100],ch;
char convert(int f)
{
if(f==1)
return 'N';
else if(f==-1)
return 'S';
else if(f==-2)
return 'W';
else if(f==2)
return 'E';
}
bool valid(int r,int c)
{
if(r<0)
return false;
else if(r>=row)
return false;
else if(c<0)
return false;
else if(c>=col)
return false;
return true;
}
void movement(char c,int cr,int cc,int f)
{
if(c=='F')
{
if(f==1)
{
if(maze[cr-1][cc]!='*' && valid(cr-1,cc))
{
cr--;
}
}
else if(f==-1)
{
if(maze[cr+1][cc]!='*'&&valid(cr+1,cc))
{
cr++;
}
}
else if(f==2)
{
if(maze[cr][cc+1]!='*'&&valid(cr,cc+1))
{
cc++;
}
}
else if(f==-2)
{
if(maze[cr][cc-1]!='*'&&valid(cr,cc-1))
{
cc--;
}
}
}
else if(c=='R')
{
switch(f)
{
case 1: f=2;break;
case 2: f=-1;break;
case -1: f=-2;break;
case -2: f=1;break;
default:break;
}
}
else if(c=='L')
{
switch(f)
{
case 1: f=-2;break;
case -2: f=-1;break;
case -1: f=2;break;
case 2: f=1;break;
default: break;
}
}
cRow=cr;
cCol=cc;
face=f;
return ;
}
int main()
{
int tCase,nCase;
cin>>tCase;
fr(nCase,1,tCase)
{
cout<<endl;
face=1;//north=1, south=-1,west=-2,east=2
cin>>row>>col;
mem(maze,0);
int i,j;
getchar();
fr(i,0,row-1)
{
gets(maze[i]);
//cout<<maze[i]<<endl;
//getchar();
}
/*fr(i,0,row-1)
{
fr(j,0,col-1)
{
cout<<maze[i][j];
}
cout<<endl;
}*/
cin>>cRow>>cCol;
cin>>ch;
cRow--;
cCol--;
//cout<<ch<<endl;
i=0;
while(ch!='Q')
{
i++;
movement(ch,cRow,cCol,face);
cin>>ch;
//cout<<i<<" "<<ch<<" "<<cRow<<" "<<cCol<<" "<<convert(face)<<endl;
}
cout<<cRow+1<<" "<<cCol+1<<" "<<convert(face)<<endl;
cout<<endl;
}
return 0;
}
-
- Guru
- Posts: 5947
- Joined: Thu Sep 01, 2011 9:09 am
- Location: San Jose, CA, USA
Re: 10377 - Maze Traversal
It looks like you figured it out.
Check input and AC output for thousands of problems on uDebug!