2011 블 루 브리지 컵 쇼핑 계획 [첫 경기 시험 문제]
회 사 는 한 상점 의 상품권 1000 원 을 보 내 가게 의 m 가지 상품 만 구 매 할 수 있 도록 제한 했다.각 상품 의 가격 은 각각 m1, m2,........................................................................
프로그램 입력:
첫 번 째 줄 은 정수 m 로 구 매 가능 한 상품 의 종 류 를 나타 낸다.
다음은 m 개의 정수 로 한 줄 씩 이 m 가지 상품 의 단 가 를 대표 한다.
프로그램 출력:
첫 줄 은 하나의 정수 로, 모두 몇 가지 방안 이 있 는 지 를 나타 낸다.
두 번 째 줄 부터 각 방안 이 1 줄 을 차지 하고 각 상품 의 구 매 수량 을 표시 하 며 중간 에 빈 칸 으로 구분한다.
예 를 들 면:
입력:
2
200
300
출력
2
2 2
5 0
입력:
2
500
800
출력
1
2 0
참고 답안 은 다음 과 같다.
#include<stdio.h>
#include<string.h>
int cost;
int n;//
int price[2000];//
int num[100];//
int sum=0;//
int arg[100][100];//
void Fun(int x)// , ( )
{
int i;
if(cost>1000||x>=n)
return;
if(cost==1000)
{
for(i=0; i<n; i++)
arg[sum][i] = num[i];
sum++;
return;
}
num[x]++;//
cost+=price[x];
Fun(x);//
num[x]--;//
cost-=price[x];
Fun(x+1);//
}
int main()
{
int i,j;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&price[i]);
memset(num,0,sizeof(num));// 0
Fun(0);
printf("%d
",sum);
for(i=0;i<sum;i++)
{
printf("%d",arg[i][0]);//
for(j=1;j<n;j++)
printf(" %d",arg[i][j]);
puts("");
}
return 0;
}
보충 지식:
599
memset
() 함수: s 가 가리 키 는 메모리 의 앞 n 개 를 바이트 의 내용 은 모두 ch 가 지정 한 ASCII 값 으로 설정 되 어 있 습 니 다. 블록의 크기 는 세 번 째 매개 변수 로 지정 되 어 있 습 니 다. 이 함 수 는 보통 새로 신청 한 메모리 의 초기 화 작업 을 합 니 다. 반환 값 은 S 를 가리 키 는 지침 입 니 다.
구체 적 인 용법:
첫째: ch 와 n 의 위 치 를 반대로 만 들 었 다.
하나의 char a [20] 를 0 으로 치 우려 면 반드시 memset (a, 0, 20) 이 어야 한 다 는 것 을 기억 해 야 한다.
memset (a, 20, 0) 이 아 닙 니 다.
둘째: memset 을 지나치게 사용 하면 프로그래머 들 이 어떤 심리 적 그림자 가 있 을 수 있다 고 생각 합 니 다. 그들 은 초기 화 되 지 않 은 메모 리 를 두려워 하기 때문에 이런 코드 를 쓸 것 입 니 다.
char buffer[20];
memset(buffer,0,sizeof(char)*20);
strcpy(buffer,"123");
/////////////////////////////////////////////////////////////
/////////// memset ,strcpy buffer , memset,
/////////// printf buffer 。
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Codility Lesson3】FrogJmpA small frog wants to get to the other side of the road. The frog is currently located at position X and wants to get to...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.