[cpp] /********************************* * 日期:2013-1-31 * 作者:SJF0115 * 題號: 九度OJ 題目1072:有多少不同的面值組合? * 來源:http://ac.jobdu.com/problem.php?pid=1072 * 結果:AC * 來源:2002年清華大學計算機研究生機試真題(第I套) * 總結:浮點數表示不是精確表示,所以不能對浮點數進行== 和 !=的比較,盡量轉化為整數的比較。 double型會得到錯誤答案98. **********************************/ #include <stdio.h> #include <math.h> int Money[120]; //判斷是否是不同郵資 int Match(int n,float money){ for(int i = 0;i < n;i++){ if(Money[i] == money){ return 1; } } return 0; } int main() { int i,j,k,count = 0; int money = 0; //8角的郵票5張 for(i = 0;i <= 5;i++){ //1元的郵票4張 for(j = 0;j <= 4;j++){ //1元8角的郵票6張 for(k = 0;k <= 6;k++){ money = i * 8 + j * 10 + k*18; //不同郵資 if(Match(count,money) == 0){ Money[count] = money; count++; } } } } printf("%d\n",count-1); return 0; } /********************************* * 日期:2013-1-31 * 作者:SJF0115 * 題號: 九度OJ 題目1072:有多少不同的面值組合? * 來源:http://ac.jobdu.com/problem.php?pid=1072 * 結果:AC * 來源:2002年清華大學計算機研究生機試真題(第I套) * 總結:浮點數表示不是精確表示,所以不能對浮點數進行== 和 !=的比較,盡量轉化為整數的比較。 double型會得到錯誤答案98. **********************************/ #include <stdio.h> #include <math.h> int Money[120]; //判斷是否是不同郵資 int Match(int n,float money){ for(int i = 0;i < n;i++){ if(Money[i] == money){ return 1; } } return 0; } int main() { int i,j,k,count = 0; int money = 0; //8角的郵票5張 for(i = 0;i <= 5;i++){ //1元的郵票4張 for(j = 0;j <= 4;j++){ //1元8角的郵票6張 for(k = 0;k <= 6;k++){ money = i * 8 + j * 10 + k*18; //不同郵資 if(Match(count,money) == 0){ Money[count] = money; count++; } } } } printf("%d\n",count-1); return 0; }