由于一半的人拿10元人民币,一半的人拿5元人民币,因此可以考虑将持有10元人民币的人放在队伍的前面,持有5元人民币的人放在队伍的后面。这样,在售货员开始售货时,前面的人会先使用10元人民币进行支付,售货员可以用5元人民币找零给后面的人,不会出现找零困难的情况。

以下是所有排队方案:

  1. 10 10 10 10 10 5 5 5 5 5
  2. 10 10 10 10 5 10 5 5 5 5
  3. 10 10 10 5 10 10 5 5 5 5
  4. 10 10 5 10 10 10 5 5 5 5
  5. 10 5 10 10 10 10 5 5 5 5
  6. 5 10 10 10 10 10 5 5 5 5
  7. 10 10 10 10 5 5 10 5 5 5
  8. 10 10 10 5 10 5 10 5 5 5
  9. 10 10 5 10 5 10 10 5 5 5
  10. 10 5 10 5 10 10 10 5 5 5
  11. 5 10 5 10 10 10 10 5 5 5
  12. 10 10 10 5 5 10 10 5 5 5
  13. 10 10 5 10 5 10 5 10 5 5
  14. 10 5 10 5 10 5 10 10 5 5
  15. 5 10 5 10 5 10 10 10 5 5
  16. 10 10 5 5 10 10 10 5 5 5
  17. 10 5 10 5 10 10 5 10 5 5
  18. 5 10 5 10 10 5 10 10 5 5
  19. 10 5 5 10 10 10 10 10 5 5
  20. 5 10 5 5 10 10 10 10 5 5
  21. 10 5 5 10 5 10 10 10 5 5
  22. 5 10 5 5 10 5 10 10 5 5
  23. 5 5 10 10 10 10 10 10 5 5
  24. 5 10 5 5 5 10 10 10 10 5
  25. 5 5 10 5 10 10 10 10 10 5
  26. 5 5 5 10 10 10 10 10 10 5
  27. 10 5 5 5 10 10 10 10 10 5
  28. 5 10 5 5 5 5 10 10 10 10
  29. 5 5 10 5 5 10 10 10 10 10
  30. 5 5 5 10 5 10 10 10 10 10
  31. 5 5 5 5 10 10 10 10 10 10

以下是c语言贪心算法的代码实现:

#include <stdio.h>

int main() { int people[10] = {0, 0, 0, 0, 0, 1, 1, 1, 1, 1}; // 0表示持有10元人民币,1表示持有5元人民币 int i, j, temp, count = 1; printf("所有排队方案如下:\n"); do { printf("%d. ", count++); for (i = 0; i < 10; i++) // 冒泡排序 { for (j = i + 1; j < 10; j++) { if (people[i] > people[j]) { temp = people[i]; people[i] = people[j]; people[j] = temp; } } printf("%d ", people[i] == 0 ? 10 : 5); } printf("\n"); } while (next_permutation(people, people + 10)); // 使用STL库函数生成下一个排列 return 0;

有10个人排队购一件价为5元的商品其中一半人拿一张10元人民币另一半人拿一张5元的人民币要使售货员在售货中不发生找钱困难问这10个人应该如何排队?找出所有排队方案假设售货员一开始就没有准备零钱。c语言贪心算法

原文地址: http://www.cveoy.top/t/topic/fJvj 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录