1132: 最少硬幣問題
time limit: 1500 ms
memory limit: 10000 kb
total submit :
909(187 users)
accepted submit :
241(132 users)
page view : 9030
font style:
aaaa
aa
設有n 種不同面值的硬幣,各硬幣的面值存於陣列t[1:n]中。現要用這些面值的硬幣來找錢。可以使用的各種面值的硬幣個數存於陣列coins[1:n]中。
對任意錢數0≤m≤20001,設計乙個用最少硬幣找錢m的方法。
程式設計任務:
對於給定的1≤n≤10,硬幣面值陣列t和可以使用的各種面值的硬幣個數陣列coins,以及錢數m,0≤m≤20001,程式設計計算找錢m的最少硬幣數。
輸入包括多組測試資料,每組輸入的第一行中只有1 個整數給出n的值,第2 行起每
行2 個數,分別是t[j]和coins[j]。每組輸入最後1 行是要找的錢數m。
對於每組輸入資料,輸出一行,即計算出最少硬幣數。問題無解時輸出-1。
31 32 3
5 318
5福建省優質碩士課程《演算法設計與分析》教學組
1/*類似無窮硬幣 ,wa 2*/
3 #include 4 #include 5
using
namespace
std;67
const
int maxn = 15;8
intcoins[maxn],num[maxn];
9int
n,money;
10int ans[20010
];11
12int
main()
1328 cin>>money;
29//
最好先排序
30for(k=1; k<=money; k++)
3142
}43 ans[k] =min;44}
45if(ans[money]>=(money/max))
46 cout
47else
48 cout<
<
4950}51
52return0;
53 }
#include #includeusing
namespace
std;
const
int maxn = 15
;int
coins[maxn],num[maxn];
intn,money;
int ans[maxn][20010
];int
main()
cin>>money;
for(i=0; i<=money; i++)
for(i=1; i)
for(j=0; j<=money; j++)
if(j
ans[i][j] = ans[i-i][j];
else
ans[i][j] = min(ans[i-i][j],ans[i-1][j-coins[i]] + 1
); cout
<1][money]<
}return0;
}
/*類似無窮硬幣 ,wa
*/#include
#include
using
namespace
std;
const
int maxn = 15
;int
coins[maxn],num[maxn];
intn,money;
int ans[20010
];int
main()
cin>>money;
//最好先排序
for(k=1; k<=money; k++)
}ans[k] =min;
}if(ans[money]>=(money/max))
cout
else
cout
<
<
}return0;
}
最少硬幣問題 受限 NK1132
1132 最少硬幣問題 time limit 1500 ms memory limit 10000 kb total submit 909 187 users accepted submit 241 132 users page view 9030 font style aa aa aa 設有n 種...
最少硬幣問題
問題描述 有n種不同面值的硬幣,各硬幣面值存於陣列t 1 n 現用這些面值的錢來找錢 各面值的個數存在陣列num 1 n 中。程式設計任務 對於給定的1 n 10,硬幣面值陣列 各面值的個數及錢數m,0 m 2001,程式設計計算找錢m的最少硬幣數。input 第乙個數字n,後面n行每行兩個數,面值...
最少硬幣問題
本文內容遵從 cc版權協議 設有n 種不同面值的硬幣,各硬幣的面值存於陣列t 1 n 中。現要用這些面值的硬幣來找錢。可以使用的各種面值的硬幣個數與面值分別存於陣列coin 1 n 和t 1 n 中。對任意錢數0 m 20001,設計乙個用最少硬幣找錢m的方法,對於給定的1 n 10,硬幣面值陣列t...