삭제 문제 (C 언어 구현)
7200 단어 C 언어
욕심 산법 욕심 전략 삭제 문 제 를 사용 하여 높 은 정밀도 의 정수 n (≤ 200 비트) 을 입력 하고 그 중 임의의 k 개의 숫자 를 제거 한 후 남 은 숫자 는 원래 의 좌우 순서에 따라 새로운 정수 로 구성 합 니 다.프로 그래 밍 은 주어진 n 과 k 에 대해 하나의 방안 을 찾 아 나머지 숫자 로 구 성 된 새 수 를 최소 화 합 니 다.예 를 들 어 입력: 178542 3 출력: 142 사고 분석: 삭제 한 후의 숫자 가 가장 적 으 려 면 우 리 는 욕심 산법 전략 을 사용 하여 국부 적 으로 가장 좋 고 전체적인 최 적 화 를 이 루어 야 한다.
테스트 데 이 터 를 결합 하면 178542 에서 첫 번 째 숫자 를 삭제 한 후에 그 를 한 숫자 를 삭제 한 후의 최소 값 으로 만 들 었 다. 먼저 이 숫자 가 원래 6 자리 라 는 것 을 알 아야 한다. 한 숫자 를 삭제 한 후에 5 자리 수 를 만 들 고 같은 꼬리 에서 한 숫자의 크기 를 결정 하 는 것 은 첫 번 째 숫자 를 비교 한 다음 에 두 번 째 숫자 를 비교 한 다음 에 다음 이다.이런 식 으로 유추 하 다.
따라서 첫 번 째 숫자 를 삭제 할 때 주 는 배열 아래 에 0 으로 표 시 된 내용 을 버 리 는 지, 아래 에 1 로 표 시 된 내용 을 버 리 는 지 고려 해 야 한다.처 리 를 편리 하 게 하기 위해 서 는 숫자 를 직접 입력 하 는 것 이 아니 라 문자열 배열 을 입력 하 는 것 입 니 다.
테스트 데 이 터 를 결합 하면 첫 번 째 로 빼 야 할 숫자 는 7 이다. 1 을 빼 면 78542 이 고 7 을 빼 면 18542 이 며 첫 번 째 숫자 에 따라 크기 를 비교 할 수 있 기 때문이다.비교적 작은 숫자 를 삭제 한 후 다른 아래 표 시 된 내용 을 앞으로 이동 하면 된다.
두 번 째 와 빼 야 할 숫자 는 8 로 1 을 빼 고 8 을 빼 고 비교 할 수 있다.
이 를 통 해 숫자 길이 가 요구 에 도달 할 때 까지 유추 하 다.
다음은 구현 코드 입 니 다.
#include
int main()
{
int i=0,j=0,n,k;
char num[200]={'0'}, *p;
printf("Please input the length of the number and the length that you want to delete
");
scanf("%d%d",&n,&k);
getchar();
p=num;
printf("Please input the num
");
gets(num);
for(j=0;j<k;++j)
{
if(num[0] < num[1])
for(i=1;i<n;++i)
num[i] = num[i+1];
else
for(i=0;i<n;++i)
num[i] = num[i+1];
}
printf("Here are the results:
");
for(i=0;i<n-k;++i)
printf("%c
", num[i]);
return 0;
}
오류 알림: 처음에는 정 의 된 char 형식 배열 이 아니 라 int 형식 이 었 습 니 다.테스트 데 이 터 를 입력 한 후에 필요 에 따라 입력 해 야 한다.생각해 보 니 우리 가 입력 한 숫자 178542 는 연속 으로 입력 되 었 기 때문에 프로그램 은 우리 가 한 숫자 만 입력 했다 고 생각 할 것 이다.int 형식의 배열 로 정의 하려 면 표준 입력 은 178542 이 고 중간 에 빈 칸 을 추가 하여 숫자의 구분 을 표시 해 야 합 니 다.그러나 char 형식 으로 정의 하면 데이터 의 입력 과 표시 가 편리 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C 언어 체인 시계는 뱀을 탐식하는 작은 게임을 실현한다본고의 실례는 여러분에게 C 언어 체인표가 뱀 탐식 게임을 실현하는 구체적인 코드를 공유하여 참고하도록 하였으며, 구체적인 내용은 다음과 같다. 프로젝트 이름: 뱀놀이 운영 환경: Linux 프로그래밍 언어: C 언...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.