boggle 재귀로 완전탐색하는데 ... 재귀에 문제가 .. fkdlslss 재귀로 짜보았늦데 ... 재귀를 처음 써보다 보니 재귀에서 방문한곳을 체크하는 과정에서 뭔가 부족한 부분이 있는거같습니다 ㅠㅠ 도움주시면 정말 감사하겠습니다. #include<iostream> #include<stdio.h> #include<vector> #include<string.h> using namespace std; int check(int a,int b,int c); bool visit[7][7]; char arr[7][7]; int sizeV; int answer; char str[10]; vector<char> v; int main(){ int testCase; scanf("%d",&testCase); while(testCase--){ memset(arr,NULL,sizeof(arr)); memset(visit,true,sizeof(visit)); for(int i=1;i<=5;i++){ for(int j=1;j<=5;j++){ char a; cin >> a; //여기서 scanf("%c",&a); 이렇게 하면 왜 안되는걸까?? arr[i][j] = a; } }//입력 완료 int num; // scanf("%d",&num); cin >> num; for(int t=0;t<num;t++){ memset(str,NULL,sizeof(str)); //vector<char>::iterator iter; // v.clear(); //초기화 sizeV=0; while (true) { int c; //printf("1"); c = getchar(); // cin >> c; if (c == '\n') { break; } str[sizeV] = c; sizeV++; } /*while(scanf("%c",&c) != '\n'){ str[sizeV] = c; //v.push_back(c); sizeV++; } printf("dasd");*/ answer = 0; for(int i=1;i<=5;i++){ for(int j=1;j<=5;j++){ if(arr[i][j] == str[0]){ answer=check(1,i,j); printf("여기는 들어감 \n"); if(answer== 1){ break; } memset(visit,true,sizeof(visit)); } } } if(answer == 1){ printf("YES\n"); }else{ printf("NO\n"); } } } return 0; } int check(int a,int b,int c){ //여기서 d는 다음에 올 글자라고 해야할 둣 if(b<1||b>5||c<1||c>5){ return 0; } if(a == sizeV){ if(arr[b][c] == str[a]){ answer = 1; return 0; } }else{ for(int i=b-1;i<=b+1;i++){ for(int j=c-1;j<=c+1;j++){ if((i!=b)||(j!=c)){ if(arr[i][j] == str[a]){ printf("%d %d\n", i,j); if(visit[i][j]!=false){ visit[i][j] = false; return check(a+1,i,j); }else{ return 0; } }else{ return check(a,i,j); } } } } } return 0; } 8년 전
2개의 댓글이 있습니다. astein 우선 scanf("%c",&a); 대신 scanf(" %c",&a); 로 수정하면 입력부분의 문제를 해결될 것 같아요. "%c"를 사용하면줄바꿈 character까지 입력으로 받아지기 때문에 정상적으로 실행되지 않습니다. 8년 전 link fkdlslss while (true) { int c; //printf("1"); c = getchar(); // cin >> c; if (c == '\n') { break; } str[sizeV] = c; sizeV++; } 이걸 통해서 각각 문자들을 배열에 넣고싶은데 왜 안되는걸까요 ㅠㅠ 8년 전 link 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
fkdlslss
재귀로 짜보았늦데 ... 재귀를 처음 써보다 보니 재귀에서 방문한곳을 체크하는 과정에서 뭔가 부족한 부분이 있는거같습니다 ㅠㅠ 도움주시면 정말 감사하겠습니다.
8년 전