AcWing 4609:火柴棍数字 ← 贪心算法

【题目来源】
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。

【算法代码】

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;

int main() {
    int T;
    cin>>T;
    while(T--) {
        int n;
        cin>>n;
        if(n%2==0) cout<<1;
        else cout<<7;

        for(int i=1; i<n/2; i++) cout<<1;
        cout<<endl;
    }
}


/*
in:
10
2
3
4
5
6
7
8
9
10
11

out:
1
7
11
71
111
711
1111
7111
11111
71111
*/

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

相关推荐
承渊政道2 天前
【贪心算法】(经典实战应用解析(六):整数替换、俄罗斯套娃信封问题、可被三整除的最⼤和、距离相等的条形码、重构字符串)
c++·算法·leetcode·贪心算法·排序算法·动态规划·哈希算法
重生之我是Java开发战士3 天前
【贪心算法】柠檬水找零,将数组和减半的最少操作次数,最大数,摆动序列, 最长递增子序列,递增的三元子序列
算法·贪心算法
欢璃4 天前
笔试强训练习
java·开发语言·jvm·数据结构·算法·贪心算法·动态规划
承渊政道4 天前
【贪心算法】(经典实战应用解析(五):单调递增的数字、坏了的计算器、合并区间、⽆重叠区间、⽤最少数量的箭引爆⽓球)
数据结构·c++·leetcode·贪心算法·排序算法·动态规划·哈希算法
呃呃本4 天前
算法题(贪心算法)
算法·贪心算法
承渊政道4 天前
【贪心算法】(经典实战应用解析(四):分发饼干、最优除法、跳跃游戏、跳跃游戏Ⅱ、加油站)
数据结构·c++·算法·leetcode·贪心算法·动态规划·哈希算法
承渊政道5 天前
【贪心算法】(经典实战应用解析(三):K次取反后最⼤化的数组和、按⾝⾼排序、优势洗牌、最⻓回⽂串、增减字符串匹配)
数据结构·c++·学习·算法·贪心算法·线性回归·哈希算法
阿部多瑞 ABU5 天前
运动会智能编排系统 - 完整详细需求规格说明书
python·贪心算法·vue·html
hnjzsyjyj5 天前
洛谷 B4359:[GESP202506 三级] 分糖果 ← 贪心算法
贪心算法
YuanDaima20486 天前
贪心算法基础原理与题目说明
数据结构·人工智能·python·算法·贪心算法·手撕代码