WebGoC题解(13) 狐猬编程:GoC L4 结业测试 第4题 找木柴

题目描述

小明今天找了n跟木柴,但是木柴太多了,小明只能拿走m根木柴,小明希望拿走的木柴都是**剩下的木柴中最长的,**小明还画出以下图形

例如 输入

5 3

10 20 30 40 50

小明要拿走30 40 50 这3根木柴

从大到小画出以下图形

矩形的宽是20 ,矩形的高就是木柴的长度,两根木柴的距离是20 ,色号2,**先移动到(-350,-350)**再画图。

输入格式

第一行两个正整数n和m,分别表示小明找到n跟木柴,和要拿走m跟木柴,范围是 1<=m<=n<100

第二行n个正整数,分别表示不同木柴的长度,范围是【10,500】;

输出格式

相应的图形。

输入/输出例子1

输入:

5 2
80 40 60 20 100

输出:

样例解释

小明拿走了长度是100 和 80的木柴

解题思路

本题主要考察的是排序算法,因为题目中要把最高的m个矩形从高到矮画出来。

我们目前常用的是冒泡排序算法。

冒泡排序写法

写法1

复制代码
for(int i=1;i<=n;i++)
	{
		for(int j=i+1;j<=n;j++)
		{
			if(a[j]>a[i])
			{
				int t=a[i];
				a[i]=a[j];
				a[j]=t;
			}
		}
	}

写法2

复制代码
for(int i=1;i<n;i++)
{
    for(int j=n;j>i;j--)
    {
        if(a[j]>a[j-1])
        {
            int t=a[j];
            a[j]=a[j-1];
            a[j-1]=a[j];
        }
    }
}

教程上的排序算法:选择排序的写法

复制代码
for(int i=1;i<n;i++)
	{
		m=i;
		for(int j=i+1;i<=n;j++)
		{
			if(a[m]>a[j])m=j;
		}
		t=a[i]; a[i]=a[m]; a[m]=t;
	}

参考答案

复制代码
int main()
{
    int n,m,a[101];
    cin>>n>>m;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
    }

    for(int i=1;i<n;i++)//冒泡排序
    {
        bool f=false;
        for(int j=n;j>i;j--)
        {
            if(a[j]>a[j-1])
            {
                int t=a[j];
                a[j]=a[j-1];
                a[j-1]=t;
                f=true;
            }
        }
        if(f==false)break;
    }

    pen.up().moveTo(-350,-350).speed(10);
    for(int i=1;i<=m;i++)
    {
        pen.fd(a[i]/2.0).rr(20,a[i]).bk(a[i]/2.0);
        pen.rt(90).fd(40).lt(90);  
    }
    return 0;
}
相关推荐
knight_9___3 小时前
RAG面试篇9
java·人工智能·python·算法·agent·rag
贾斯汀玛尔斯3 小时前
每天学一个算法--Top-K 查询(Top-K Retrieval)
算法
卢总说灯箱4 小时前
2026年餐饮店广告灯箱实力厂商实践复盘,赣州聚隆运广告有限公司为何成为连锁品牌首选供应商
经验分享·创业创新·业界资讯
菜鸟丁小真4 小时前
LeetCode hot100 -131.分割回文串
数据结构·算法·leetcode·知识点总结
Yuk丶4 小时前
Procedural Dialogue Engine - UE4程序化对话系统的技术实现
c++·游戏引擎·ue4·游戏程序·虚幻
贾斯汀玛尔斯4 小时前
每天学一个算法--PageRank
算法
自信150413057594 小时前
重生之从0开始学习c++之string(上)
开发语言·c++·学习
子琦啊4 小时前
【算法复习】滑动窗口(同向区间指针)
算法
BestOrNothing_20154 小时前
C++零基础到工程实战(4.3.8):基于 vector 实现一个简易缓存数据库
c++·vector·string·缓存数据库·stringstream·键值存储·getline
啊我不会诶4 小时前
【自用复习】牛客每日一题2026.4.18 最大稳定数值
算法·深度优先