[codeforces 1303C] Perfect Keyboard 일일이 쓰기 f[x]=y, g[y]=x

2384 단어 codeforces
[codeforces 1303C] Perfect Keyboard 일일이 쓰기 f[x]=y, g[y]=x
총목록 상세 정보https://blog.csdn.net/mrcrack/article/details/103564004
온라인 평가 주소https://codeforces.com/contest/1303/problem/C
Problem
Lang
Verdict
Time
Memory
C - Perfect Keyboard
GNU C++11
Accepted
31 ms
0 KB
f[x]=y, g[y]=x를 일일이 비추기
처음에는 흐리멍덩하고 쓰기에 적합하지 않은 알고리즘을 생각한 후에 컴퓨터 처리 각도에서 주동적으로 생각하고 입력이 왼쪽에서 오른쪽으로 한 자모 한 자모의 처리에 대해 사고방식이 자연스러워진다.
하나의 공간을 펼치고 입력 중의 첫 번째 자모를 개설 공간의 중간 위치에 넣고
두 번째 자모는 첫 번째 자모의 오른쪽에 넣고
세 번째 자모는 앞의 자모와 동일한지 확인하고, 만약, 처리하지 않는다면...쓸데없는 말을 한 것 같으니, 그래도 예를 들어 시뮬레이션을 해라, 이렇게 하면 똑똑히 볼 수 있다.
예제 YES 데이터 시뮬레이션은 다음과 같습니다.
1
codedoca

YES
edocabfghijklmnpqrstuvwxyz

    
  c          c
  o          co
  d          cod
  e          code
  d          code
  o          code
  c          code
  a         acode

acodebfghijklmnpqrstuvwxyz

예제 NO 데이터 시뮬레이션은 다음과 같습니다.
1
abcda

NO

      

  a       a
  b       ab
  b       abc
  d       abcd
  a       ,     

  
NO

회의에 참가하여 편찬하고 싶은지 어느 정도 차이가 있는지 비경기 시기에 두어야 한다. 이런 문제는 빨리 편찬해야 하기 때문에 어쩔 수 없이 경기이기 때문에 여러 가지 상황이 쉽게 발생한다.
프로그램이 짜여진 후에 샘플을 보다가 갑자기 데이터 세트가 맞지 않는 것을 발견했다. 어떻게 된 일인지 AC를 제출한다.
사후에 다시 보면 샘플 중의 입력 줄과 출력 줄이 위치를 잘못 보았기 때문에 시합할 때 상황이 너무 쉽게 나타난다.
#include 
#include 
char s[210];
int pos[30],b,a[100],d;
int min(int a,int b){
	return ab?a:b;
}
int main(){
	int t,l,r,len,flag,i;
	scanf("%d",&t);
	while(t--){
		scanf("%s",s+1);
		memset(a,0,sizeof(a)),memset(pos,0,sizeof(pos));
		l=r=50;
		pos[s[1]-'a']=50,a[50]=s[1],l=r=50;
		len=strlen(s+1);
		flag=0;
		for(i=2;i<=len;i++){
			b=pos[s[i-1]-'a'],d=pos[s[i]-'a'];
			if(d){
				if(d==b+1||b==d+1)continue;
				else{
					flag=1;
					break;
				}
			}
			if(a[b+1]==0)a[b+1]=s[i],pos[s[i]-'a']=b+1,r=max(r,b+1);
			else if(a[b-1]==0)a[b-1]=s[i],pos[s[i]-'a']=b-1,l=min(l,b-1);
			else{
				flag=1;
				break;
			}
		}
		if(flag)printf("NO
"); else{ printf("YES
"); for(i=l;i<=r;i++)printf("%c",a[i]); for(i=0;i<26;i++) if(pos[i]==0) printf("%c",'a'+i); printf("
"); } } return 0; }

 

좋은 웹페이지 즐겨찾기