예제 6 - 2 UVA 514 - Rails (레일)
대체적인 사고방식:
전체적으로 두 가지 과정 으로 나 뉘 는데 A 에서 C 까지 C 에서 B 까지
A 대표 로 A 에서 C 까지 의 번호 서열 은 1 에서 n 이 분명 하 다.
B 대표 로 최종 B 에 있 는 차 번호.
A = 1, B = 1, B 를 최종 차량 의 배열 색인 으로 합 니 다.
순환 을 시 작 했 는데 A 중의 차 가 B 중의 차 와 같다 는 것 을 발견 하면 이 차 는 즉시 역 에 들 어가 서 바로 역 을 나 가 야 한 다 는 것 을 설명 했다.
else B 중의 차 가 창고 C 중의 첫 번 째 와 같다 는 것 을 발견 하면 이때 창고 C 의 차 가 역 을 나 가 야 한 다 는 것 을 설명 한다.
else 는 A 중 에 남 은 것 을 발견 하면 A 를 역 에 들 어가 게 한다.
그렇지 않 으 면 무의미 하 다. 그럼 노!
출력 주의 형식 만 있 으 면 OK 입 니 다. 저 는 한 번 에 문 제 를 잘 읽 지 못 했 습 니 다. 형식 에 잘못 되 었 습 니 다. 사실은 마지막 그룹 뒤에 빈 줄 이 있 습 니 다!
시사 점:
이 문 제 는 이렇게 생각 하지 않 으 면 억지로 생각 하 는 것 입 니 다. 번 거 롭 고 어 쩔 줄 모 르 기 때문에 이 문 제 는 저 에 게 시사 점 을 주 었 습 니 다. 그것 은 문 제 를 최대한 현실 화하 고 구체화 시 키 는 것 입 니 다. 바로 이 문 제 를 실제 적 인 의미 로 만 드 는 것 입 니 다. 하나의 시 뮬 레이 션 입 니 다. 마지막 else 는 성립 되 지 않 을 것 입 니 다!
코드 는 다음 과 같 습 니 다:
#include<stack>
#include<cstdio>
using namespace std;
const int maxn = 1000 + 10;
int a[maxn];
int main()
{
int n,cnt=0;
while(scanf("%d",&n) == 1 && n){
while(scanf("%d",&a[1]) && a[1]){
for (int i = 2; i <= n; ++i)scanf("%d",&a[i]);
stack<int>s;
int A=1,B=1;
bool ok=true;
while(B <= n){
if (A == a[B]){A++;B++;}
else if (!s.empty() && s.top() == a[B]){s.pop();B++;}
else if(A <= n)s.push(A++);
else {ok=false;break;}
}
printf("%s", ok ? "Yes
" : "No
");
}
printf("
");
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C 언어 체인 시계는 뱀을 탐식하는 작은 게임을 실현한다본고의 실례는 여러분에게 C 언어 체인표가 뱀 탐식 게임을 실현하는 구체적인 코드를 공유하여 참고하도록 하였으며, 구체적인 내용은 다음과 같다. 프로젝트 이름: 뱀놀이 운영 환경: Linux 프로그래밍 언어: C 언...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.