求数组中相差最小的两个元素/c++ 伪代码 算法分析与设计习题1

这篇具有很好参考价值的文章主要介绍了求数组中相差最小的两个元素/c++ 伪代码 算法分析与设计习题1。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.求数组中相差最小的两个元素

思路:先进行排序,然后相邻元素互减,更新最小差值

伪代码:

输入:一个数组
输出:数组中相差最小值
1.进行快排 qsort(a,n,siezeof(int),cmp);
2.求相邻元素差值,并记录最小值
int min=100001;
for(int i=0;i<4;i++) {
if(a[i+1]-a[i]<min) {
min = a[i+1]-a[i];
}
}
3.输出min
#include<iostream>
#include<algorithm>
using namespace std;

int cmp(const void *p1, const void *p2) {
    return (*(int *)p1) - (*(int *)p2);
};
int main()
{
    int a[100000] = {0};
    int n;
    cin >> n;
    for (int i = 0; i < n;++i)
    {
        cin >> a[i];
    }
    qsort(a,n,sizeof(int),cmp);
    int min=100001;
    for(int i=0;i<4;i++) {
        if(a[i+1]-a[i]<min) {
            min = a[i+1]-a[i];
        }
    }
    printf("%d",min);
    return 0 ;
}

2.设数组a[n]中的元素均不相等,设计算法找出a[n]中一个既不是最大也不是最小的元素

#include<iostream>
using namespace std;
void test(int a[]);

int main() {
    int p, q;
    int a[10] = { 29,39,10,11,23,24,35,65,6,7 };
    test(a);
    return 0;
}

void test(int a[]) {
    for (int i = 0; i < 10; i++) {
        T:for (int j = 0, p = 0, q = 0; j < 10; j++) {
            if (a[i] > a[j]) {
                p++;
            }
            else if (a[i] < a[j]) {
                q++;
            }
            else if (a[i] = a[j]) {

            }
            while (p > 0 && q > 0) {
                cout << a[i] << endl;
                i++;
                goto T;
            }
        }
    }
}

3.求n至少为多大时,n个1组成的整数能被2021整除

4.完全数(Perfect number)

又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。设计算法,判断给定的数是否是完美数

伪代码:

输入:一个数
输出:该数是否为完美数
1.循环判断(n%q==0)
2.将符合条件的q相加存在sum中
3.判断n是否等于sum并输出
#include<stdio.h>
int main()
{
    int n,sum=0;
    scanf("%d",&n);
        for(int q=1;q<n;q++)
        {
            if(n%q==0)//将每个因子相加
            {
                sum+=q;
            }
        }
        if(sum==n)//如果因子的和==它本身
        {
            printf("True");
        }else
        {
            printf("False");
        }
    return 0;
}

5.过桥

有4个人要过一座桥,他们都站在桥的同一边,要让他们用17分钟全部通过这座桥.这时是晚上,他们只有一个手电筒.最多只能两人同时过桥.不管是谁过桥,一个人还是两个人,都需要带着手电筒.手电筒必须要传来传去,不能扔过去.每个人过桥的速度不同,两个人必须以较慢的那个人的速度过桥.

第一个人:过桥需要1分钟;

第二个人:过桥需要2分钟;

第三个人:过桥需要5分钟;

第四个人:过桥需要10分钟.

求过桥的最短时间:  第一个人和第二个人先过去,第一个人回来送,第四个和第三个人过去,第二个回来送,然后第一个和第二个一起过来,用时17min文章来源地址https://www.toymoban.com/news/detail-702829.html

到了这里,关于求数组中相差最小的两个元素/c++ 伪代码 算法分析与设计习题1的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 27.移除元素+88.合并两个有序数组

    目录 一、移除元素 (一)题目 (二)代码  二、合并两个有序数组 (一)题目 (二)代码 27. 移除元素 - 力扣(LeetCode)     88. 合并两个有序数组 - 力扣(LeetCode)    用双指针  

    2023年04月14日
    浏览(30)
  • 计算机算法分析与设计(22)---回溯法(最小重量机器设计问题)

     设某一机器由 n n n 个部件组成,每种部件都可以从 m m m 个不同的供应商处购得。设 w i j w_{ij} w ij ​ 是从供应商 j j j 处购得的部件i的重置, c i j c_{ij} c ij ​ 是相应的价格。设计一个算法,给出总价格不超过 d d d 的最小重量机器设计。 数据输入: 第 1 1 1 行有 3 3 3 个正整

    2024年02月06日
    浏览(35)
  • NO.453 最小操作次数使数组元素相等

    给你一个长度为  n  的整数数组,每次操作将会使  n - 1  个元素增加  1  。返回让数组所有元素相等的最小操作次数。 本题要求,获取最小操作次数,即在满足所有元素均相等的情况下,操作次数最少。 由于本题无法确定最终元素均相等时,对于元素的大小,所以需要从

    2024年02月16日
    浏览(22)
  • js 过滤两个数组中的相同元素

    encodeComponent() 不会对 ASCII 数字 或者   - _ . ! ~ * \\\' ( )   编码 。只对 #¥%@…… ....等编码 防止 服务端解析 这些地址 无法识别  相反 decodeComponent() 解码  js中encodeURIComponent函数的使用,加码解码_玉米妈妈-momoxifei的博客-CSDN博客 js中encodeURIComponent函数的使用,加码解码 https:

    2024年02月15日
    浏览(24)
  • 写一个方法实现数组元素每两个元素加一个换行,并进行文件导出

    源数据: 输出的数据如下: 我们可以手写一个方法,方法如下: 然后再写一个数据导出方法 扩展链接:Vue 项目开发将数据下载导出到本地的方法

    2024年02月06日
    浏览(35)
  • 2023-09-05 LeetCode每日一题(从两个数字数组里生成最小数字)

    点击跳转到题目位置 给你两个只包含 1 到 9 之间数字的数组 nums1 和 nums2 ,每个数组中的元素 互不相同 ,请你返回 最小 的数字,两个数组都 至少 包含这个数字的某个数位。 示例 1: 示例 2: 提示: 1 = nums1.length, nums2.length = 9 1 = nums1[i], nums2[i] = 9 每个数组中,元素 互不相

    2024年02月09日
    浏览(46)
  • Leetcode24-找到两个数组中的公共元素(2956)

    给你两个下标从 0 开始的整数数组 nums1 和 nums2 ,它们分别含有 n 和 m 个元素。 请你计算以下两个数值: 统计 0 = i n 中的下标 i ,满足 nums1[i] 在 nums2 中 至少 出现了一次。 统计 0 = i m 中的下标 i ,满足 nums2[i] 在 nums1 中 至少 出现了一次。 请你返回一个长度为 2 的整数数组

    2024年01月20日
    浏览(33)
  • 【LeetCode】移除元素、删除有序数组中的重复项、合并两个有序数组

    🧑‍💻作者: @情话0.0 📝专栏:《LeetCode》 🔖题目链接:移除元素、删除有序数组中的重复项、合并两个有序数组 给你一个数组 nums 和一个值 val,你需要 原地移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空

    2023年04月09日
    浏览(37)
  • C语言每日一题:6.移除元素+合并两个有序数组。

    一:暴力查找的方法: 1.找到对应val值的下标,返回数组的下标。 2.删除对应的下标,从前向后用后面覆盖前面。当后一个是数组最后一个数值是就赋值结束了(注意数组越界的问题)。 3.删除了一个数之后数组元素个数要–。 4.查找和删除是在一个循环里面因为val的值可能

    2024年02月15日
    浏览(33)
  • 双指针问题——求只包含两个元素的最长连续子序列(子数组)

    你正在探访一家农场,农场从左到右种植了一排果树。这些树用一个整数数组  fruits  表示,其中  fruits[i]  是第  i  棵树上的水果  种类  。 你想要尽可能多地收集水果。然而,农场的主人设定了一些严格的规矩,你必须按照要求采摘水果: 你只有  两个  篮子,并且每

    2024年02月02日
    浏览(23)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包