POJ 3750, 어린이 번호 문제, 조세 프 문제 시 뮬 레이 션
Time Limit: 1000MS
Memory Limit: 65536K
Total Submissions: 9978
Accepted: 4649
Description
N 명의 아이들 이 한 바퀴 를 돌 고 그들 에 게 1 부터 순서대로 번 호 를 매 겨 주 었 다. 지금 은 W 번 째 부터 번 호 를 매 겨 서 S 번 째 로 보고 할 때 이 아 이 는 열 을 매 긴 다음 에 다음 아이 부터 번 호 를 매 겨 도 S 번 째 로 보고 하 는 것 을 지정 했다. 이렇게 반복 해서 모든 아이들 이 열 을 매 길 때 까지 (총 인원 이 S 번 이 부족 할 때 순환 번 호 를 매 길 것) 아이 에 게 열 을 매 기 는 순 서 를 구 했다.
Input
첫 줄 에 아이의 수 N 을 입력 하 십시오 (N < = 64)
다음 줄 마다 한 아이의 이름 을 입력 하 십시오.
마지막 줄 에 W, S (W < N) 를 입력 하고 쉼표 로 "," 간격
Output
사람 이름 에 따라 아 이 를 출력 하 는 순서 로 줄 마다 한 사람 씩 출력 합 니 다.
Sample Input
5
Xiaoming
Xiaohua
Xiaowang
Zhangsan
Lisi
2,3
Sample Output
Zhangsan
Xiaohua
Xiaoming
Xiaowang
Lisi
이것 이 바로 조세 프 문제 이다. 앞에서 나 는 이런 조세 프 의 절 차 를 쓴 적 이 있다. 여기 서 나 는 단지 간단하게 제기 할 뿐이다.
어떻게 1 차원 배열 로 원 을 그 리 는 문 제 를 완성 할 수 있 습 니까? 먼저 공간 이 비교적 큰 1 차원 배열 을 정의 하고 S 번 째 까지 세 고 열 을 내 면 그 전의 아이들 을 세 는 것 입 니 다.
순서대로 마지막 아이 뒤에 줄 을 서 야 합 니 다. 예 를 들 어 모두 n 명의 아이 입 니 다. 번 호 는 1 부터 n 입 니 다. 배열 p [] 에 놓 고 4 번 을 세 지 못 하면 전체 과정 은 다음 과 같 습 니 다.
p [1] 을 p [n + 1] 에 넣 고 p [2] 를 p [n + 2] 에 넣 고 p [3] 을 p [n + 3] 에 넣 고 뒤 p [4] 를 열 에 올 리 고 p [5] 를 p [n + 4] 에 올 리 고 p [6] 을 p [n + 5] 에 올 리 는 식 으로 유추 하면 간단 하 다.
하지만 이 문제 에 서 는 시작 하기 전에 앞의 w - 1 명 을 n 번 아이의 뒤에 두 어야 합 니 다!
코드 는:
#include <stdio.h>
#include <string.h>
#include <math.h>
struct child
{
char name[20];
}s[1000];
struct out
{
char name[20];
}p[65];
int main()
{
int i,j,k=0,n,front,behind,w,S;
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%s",s[i].name);
scanf("%d,%d",&w,&S);
front=w;
behind=n+1;
for(i=1;i<w;i++)
{
strcpy(s[behind].name,s[i].name);
behind++;
}
while(n--)
{
for(i=1;i<S;i++)
{
strcpy(s[behind].name,s[front].name);
behind++;front++;
}
strcpy(p[k].name,s[front].name);
printf("%s
",p[k].name);
k++;front++;
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.