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;
}
相关推荐
君义_noip几秒前
信息学奥赛一本通 4150:【GESP2509七级】⾦币收集 | 洛谷 P14078 [GESP202509 七级] 金币收集
c++·算法·gesp·信息学奥赛·csp-s
Ricky_Theseus6 分钟前
静态链接与动态链接
c++
摸个小yu9 分钟前
【力扣LeetCode热题h100】链表、二叉树
算法·leetcode·链表
汀、人工智能15 分钟前
[特殊字符] 第93课:太平洋大西洋水流问题
数据结构·算法·数据库架构·图论·bfs·太平洋大西洋水流问题
ZPC821027 分钟前
rviz2 仿真控制器与真实机器人切换
人工智能·算法·机器人
澈20733 分钟前
双指针,数组去重
c++·算法
小辉同志1 小时前
207. 课程表
c++·算法·力扣·图论
CheerWWW1 小时前
深入理解计算机系统——位运算、树状数组
笔记·学习·算法·计算机系统
中屹指纹浏览器1 小时前
2026浏览器指纹检测技术演进与多账号反检测实战策略
经验分享·笔记
feng_you_ying_li1 小时前
C++11,{}的初始化情况与左右值及其引用
开发语言·数据结构·c++