계속 고민을 해봐도, COINS 문제 풀이에서 어디가 잘못됐는지를 못찾겠습니다. 일단 예제 입출력은 제대로 되지만, 오답이 계속 나옵니다.
힌트 주실분 안계시나요??
#include <iostream>usingnamespacestd;#include <vector>#include <algorithm>#define MAX_COUNT 1000000007vector<int>coins;intcache[5000+1][100];intCountCoins(intsum,inttype){int&ret=cache[sum][type];if(sum==0)return1;if(sum<coins.back())return0;if(sum<0)return0;if(ret!=0)returnret;for(inti=type;i<coins.size();++i){if(sum>=coins[i]){ret+=CountCoins(sum-coins[i],i);}}if(ret>MAX_COUNT){ret%=MAX_COUNT;}returnret;}// 환전 금액 (1 <= M <= 5000)// 동전 종류의 개수 (1 <= C <= 100)intmain(){intnum_cases;cin>>num_cases;for(intn=0;n<num_cases;++n){// cache 초기화fill_n(cache[0],5001*100,0);// 동전 총합, 코인 개수intsum,ncoin;cin>>sum>>ncoin;// 동전 종류 벡터 생성for(inti=0;i<ncoin;i++){inttemp;cin>>temp;coins.push_back(temp);}// 코인을 정렬sort(coins.begin(),coins.end(),greater<int>());if(CountCoins(sum,0)>MAX_COUNT)cout<<CountCoins(sum,0)%MAX_COUNT<<endl;elsecout<<CountCoins(sum,0)<<endl;// 초기화coins.clear();}return0;}
iamhjoo
계속 고민을 해봐도, COINS 문제 풀이에서 어디가 잘못됐는지를 못찾겠습니다. 일단 예제 입출력은 제대로 되지만, 오답이 계속 나옵니다.
힌트 주실분 안계시나요??
11년 전