poj 1318 Word Amalgamation

3234 단어
이런 문자열의 문제는 반드시 자세해야 한다. 그렇지 않으면 쉽게 WA...
내가 시작한 방법은 디렉터리와sortDis를 처리하는 것이 아니라 매번 한 번씩 검색하는 것이다. 지금까지 나는 왜 틀렸는지 찾지 못했다...
다음 코드는 디렉터리와sortDis를 먼저 처리한 다음에 처리하기 쉽다
AC 코드:
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>

using namespace std;

char dictionary[102][10];		//1~100 ,   1~6  
char sortDic[102][10];			//       
int dicNum;						//       

int main()
{
	//freopen("test.txt","r",stdin);

	char tmp[7];
	int i;
	//    ,   0  		ok
	for(i=0; ;i++)
	{
		scanf("%s",tmp);
		if(strcmp(tmp,"XXXXXX")==0)
			break;
		
		strcpy(dictionary[i],tmp);
	}
	dicNum=i;

	//  dictionary sortDic
	int j;
	for(i=0;i<dicNum;i++)
		for(j=0;j<dicNum;j++)
			if(strcmp(dictionary[i],dictionary[j])<0)
			{
				strcpy(tmp,dictionary[j]);
				strcpy(dictionary[j],dictionary[i]);
				strcpy(dictionary[i],tmp);
			}//        

	//test
	/*for(i=0;i<dicNum;i++)
		printf("%s
",dictionary[i]);*/ for(i=0;i<dicNum;i++) // sortDic { strcpy(sortDic[i],dictionary[i]); sort(sortDic[i],sortDic[i]+strlen(sortDic[i])); } // while(scanf("%s",tmp)) { if(strcmp(tmp,"XXXXXX")==0) return 0; sort(tmp,tmp+strlen(tmp)); int count=0; for(i=0;i<dicNum;i++) if(strcmp(tmp,sortDic[i])==0) // { printf("%s
",dictionary[i]); count++; } if(count==0) { printf("NOT A VALID WORD
"); printf("******
"); continue; } printf("******
"); } return 0; }

항상 WA 코드:
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>

using namespace std;

char dictionary[102][7];		//1~100 ,   1~6  
char sortDic[102][7];			//       
int dicNum;						//       
int flag[102];

int main()
{
	//freopen("test.txt","r",stdin);

	char tmp[7];
	int i;
	//    ,   1  		ok
	for(i=1; ;i++)
	{
		scanf("%s",tmp);
		if(strcmp(tmp,"XXXXXX")==0)
			break;
		
		strcpy(dictionary[i],tmp);
		strcpy(sortDic[i],tmp);
		sort(sortDic[i],sortDic[i]+strlen(tmp));
	}
	dicNum=i-1;

	//test
	/*for(i=1;i<=dicNum;i++)
		printf("%s
",dictionary[i]);*/ //test /*for(i=1;i<=dicNum;i++) printf("%s
",sortDic[i]);*/ // while(scanf("%s",tmp)) { if(strcmp(tmp,"XXXXXX")==0) return 0; //init flag memset(flag,0,sizeof(flag)); sort(tmp,tmp+strlen(tmp)); int count=0; for(i=1;i<=dicNum;i++) if(strcmp(tmp,sortDic[i])==0) // { flag[i]=1; count++; } if(count==0) { printf("NOT A VALID WORD
"); printf("******
"); continue; } // int pos=1; while(1) { strcpy(tmp,"zzzzzz"); //tmp for(i=1;i<=dicNum;i++) { if(flag[i]==1 && strcmp(tmp,dictionary[i])>0) //tmp { strcpy(tmp,dictionary[i]); pos=i; } } if(count==0) break; else { printf("%s
",tmp); count--; flag[pos]=0; // } } printf("******
"); } return 0; }

좋은 웹페이지 즐겨찾기