HDU 5055 - Bob and math problem(贪心)

来源:互联网 发布:迪优美特网络机顶盒x7 编辑:程序博客网 时间:2024/05/22 12:53

题意

在条件下组成最大的数字。

  1. 是奇数。

  2. 0不能放在前面。

思路

取出一个最小的奇数放在最后,然后从最大的开始放。

代码有点不优雅。。

代码

  1. #include <cstdio>
  2. #include <stack>
  3. #include <set>
  4. #include <iostream>
  5. #include <string>
  6. #include <vector>
  7. #include <queue>
  8. #include <functional>
  9. #include <cstring>
  10. #include <algorithm>
  11. #include <cctype>
  12. #include <ctime>
  13. #include <cstdlib>
  14. #include <fstream>
  15. #include <string>
  16. #include <sstream>
  17. #include <map>
  18. #include <cmath>
  19. #define LL long long
  20. #define lowbit(x) ((x) & (-x))
  21. #define MP(a, b) make_pair(a, b)
  22. #define MS(arr, num) memset(arr, num, sizeof(arr))
  23. #define PB push_back
  24. #define F first
  25. #define S second
  26. #define ROP freopen("input.txt", "r", stdin);
  27. #define BitCount(x) __builtin_popcount(x)
  28. const double PI = acos(-1.0);
  29. const int INF = 0x3f3f3f3f;
  30. using namespace std;
  31. const int MAXN = 1e4 + 100;
  32. const int MAXN2 = 1e6 + 5;
  33. const int MOD = 20071027;
  34. typedef pair<int, int> pii;
  35. typedef vector<int>::iterator viti;
  36. typedef vector<pii>::iterator vitii;
  37. int ans[MAXN], dic[] = {1,3,5,7,9}, num[10];
  38. int main()
  39. {
  40. //ROP;
  41. int n, i, j;
  42. while (~scanf("%d", &n))
  43. {
  44. int pos = 1, temp;
  45. MS(num, 0);
  46. MS(ans, 0);
  47. for (i = 0; i < n; i++)
  48. {
  49. scanf("%d", &temp);
  50. num[temp]++;
  51. }
  52. bool flag = false;
  53. for (i = 0; i < 5; i++)
  54. {
  55. if (num[dic[i]])
  56. {
  57. ans[n] = dic[i];
  58. flag = true;
  59. num[dic[i]]--;
  60. break;
  61. }
  62. }
  63. if (!flag)
  64. {
  65. printf("-1\n");
  66. continue;
  67. }
  68. else
  69. {
  70. for (i = 9; i >= 1; i--)
  71. for (j = 0; j < num[i]; j++) ans[pos++] = i;
  72. if (pos == 1 && n != 1)
  73. {
  74. printf("-1\n");
  75. continue;
  76. }
  77. }
  78. for (i = 1; i <= n; i++) printf("%d", ans[i]);
  79. puts("");
  80. }
  81. return 0;
  82. }
0 0
原创粉丝点击