当前位置:   article > 正文

AcWing 4609:火柴棍数字 ← 贪心算法_acwing测试数据

acwing测试数据

【题目来源】
https://www.acwing.com/problem/content/4612/

【题目描述】
给定 n 个火柴棍,你可以用它们摆出数字 0∼9。
摆出每个数字所需要的具体火柴棍数量如下图所示:

请你用这些火柴棍摆成若干个数字,并把这些数字排成一排组成一个整数,要求组成的整数尽可能大。
输出可以摆成的最大可能整数。

【输入格式】
第一行包含整数 T,表示共有 T 组测试数据。
每组数据占一行,包含一个整数 n。表示火柴根数。

【输出格式】
输出可以摆成的最大可能整数。

【数据范围】
前 3 个测试点满足 1≤t≤10。
所有测试点满足 1≤t≤100,2≤n≤10^5,同一测试点内所有 n 相加之和不超过 10^5。

【输入样例】
10
2
3
4
5
6
7
8
9
10
11

【输出样例】
1
7
11
71
111
711
1111
7111
11111
71111

【算法分析】
○ 给定的火柴棍数字中,凑出 1 需要 2 根火柴,凑出 7 需要 3 根火柴 ……
○ 位数越多的数,代表的数越大。
○ 而给定一个数,能凑出的最大位数为:
   若 n 为偶数,则最多能凑出 n/2 位,每位为 1;
   若 n 为奇数,依然能最多能凑出 n/2 位,其中最高位为 7,其他 n/2-1 位均为 1。

【算法代码】

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int main() {
  4. int T;
  5. cin>>T;
  6. while(T--) {
  7. int n;
  8. cin>>n;
  9. if(n%2==0) cout<<1;
  10. else cout<<7;
  11. for(int i=1; i<n/2; i++) cout<<1;
  12. cout<<endl;
  13. }
  14. }
  15. /*
  16. in:
  17. 10
  18. 2
  19. 3
  20. 4
  21. 5
  22. 6
  23. 7
  24. 8
  25. 9
  26. 10
  27. 11
  28. out:
  29. 1
  30. 7
  31. 11
  32. 71
  33. 111
  34. 711
  35. 1111
  36. 7111
  37. 11111
  38. 71111
  39. */



【参考文献】
https://www.acwing.com/video/4299/
https://www.acwing.com/solution/content/136165/






 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/650608
推荐阅读
相关标签
  

闽ICP备14008679号