• 1.【算法五章】



    在这里插入图片描述

    第一篇:(矩形边数)

    已知3个矩形的大小依次是axb,a2xb2和agxb3。用这3个矩形能拼出的所有多边形中,边数最少可以是多少?
    在这里插入图片描述

    解题思路

    在解决此类问题的时候,我才用最大边化。即首先找出3个矩阵整在一起的情况下边数最大为多少.如果有边相等的,那么对应的变数就会与最大值差两个,否则不差,仍然是两个.

    代码展示

     
    #include 
    using namespace std;
    int main()
    {
        cout << "请输入数据的组数:" << endl;
        int n, a[100],m=0;
        cin >> n;
        for (int i = 0; i < n; i++)               //几组数据
        {
            cout << "请输入第" << i + 1 << "组数据:" << endl;
            for (int j = i*6; j < 6*(i+1); j++)        //每组数据多少
            {
                cin >> a[j];
            }
        }
        for (int i = 0; i < n; i++)          //一组数据作比较
        {
            for (int j = i * 6; j < 6 * (i + 1); j++)          //   一对一对应,
            {
                for (int k = j; k < 6 * (i + 1)-1; k++)
                {
                    if (a[j] == a[k + 1])
                    {
                        m++;
                    }
                }
                
            }
            cout << 8 - (m * 2) << endl;         
            m = 0;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    第二篇:(球回弹多少cm)

    C++有一个皮球从a厘米高度开始下落,每次落地后反弹回原来高度的一半。经过多次反弹后,如果皮球是从1厘米的高度下落,那么皮球触地后就不再反弹了。问皮球一共经过了多少厘米
    输入格式
    一个整数a。
    输出格式
    一个整数。
    输入/输出例子1输入:10 输出:26 样例解释 10+5+5+2+2+1+1=26

    整体思路:

    本题问共经历了多少厘米,我们可以想象一下,如果一个球从10cm的高度落下,那么经过第一次弹跳后落地,那么经历了多少cm呢?答案是 10cm(第一次落地)+5cm(第一次弹起)+5cm(第一次谈起落地)。那么第二次弹起落地是多少呢?2.5cm+2.5cm.所以我们返现规律,每次落地弹起的高度是:(落地时高度)/2*2;

    代码展示:

     
    #include  
    using namespace std;
    #include 
    #include  
    int main()
    {
        int a,m=0;
        cout << "请输入从多cm" << endl;
        cin >> a;
        int sum = a,sum1=0;
        for (int i = 0; i < a; i++)
        {
            sum /=2;
            sum1 += sum*2;
        }
        cout << "需要" << sum1+a << endl;              //为什么要+a?  因为没算第一个洛的位置
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    他人代码展示:

    #include 
    using namespace std;
    int main()
    {
        int a;
        cin>>a;
        int sum = a;
        while(a > 1)
        {
            a/=2;
            sum += a*2;
        }
        cout<<sum<<endl;
        return 0;
    }
     
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    第三篇:(删除重复项)

    删除两个字符串里面的重复项,然后输出删除后的结果:

    整体思路:

    首先我们先要进行手动输入两个字符串,在这里我们要知道字符串的特性 s3=s3+s1;可以实现字符串的合并.然后设置一个for循环进行一个个判断是否相等,如果不相等的话那么就合并。

    代码展示:

    #include 
    using namespace std;
    #include 
    int main()
    {
     string s1 ;
     char s2;
     string s3 ;
     cout << "请输入原始数据" << endl;
     cin >> s1;
     cout << "请输入要删除元素:" << endl;
     cin >> s2;
     for (int i = 0; i < s1.length(); i++)
     {
       if (s1[i] !=s2) //如果不用strcmp函数,那么就只能一个是string 一个是char型.如果用strcmp,那么两个都需要是char类型的数组
       {
        s3 = s1[i] + s3;
       }
     }
    cout << "删除后的元素为:" << s3 << endl;
     return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    第四篇 (回文数)

    回文数,就是首尾一一对应相等的数就是回文数

    整体思路:

    首先我们要设置一个字符串,然后对其进行一个小于n/2的for循环,(因为是俩俩判定)。重要思路是首尾相减如果为0,那么就是回文数.

    代码展示:

    #include 
    #include 
    using namespace std;
    int main()
    {
        int i,n;
        string s;
        cout<<"请输入你要输入一个三位数数:"<<endl;
        cin>>s;
        n=s.length();
        for(i=0;i<n/2;i++)             //因为判断的是一对
        {
            if(s[i]-s[n-1-i]==NULL)    //因为相等所以相减为0;
            {
                cout<<"YES!"<<endl;
            }
            else
            {
                cout<<"NO"<<endl;
            }
        }
        return 0;
    }
     
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    第五篇:(判断润年)

    闰年是能够被四整除且不能被100整除,但能够被400整除的数

    整体思路:

    我们要知道闰年的条件,闰年是能够被四整除且不能被100整除,但能够被400整除的数

    代码展示:

    #include 
    using namespace std;
    int main()
    {
     cout << "请输入您想判断的年份:" << endl;
     int year;
     cin >> year;
     if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) //能够被整除4,但不能整除一百,但能整除400
     {
      cout << year << "是闰年" << endl;
     }
     else
     {
      cout << year << "不是闰年" << endl;
     }
     return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
  • 相关阅读:
    ESP8266-Arduino编程实例-MQ-135空气质量检测传感器驱动
    【C++】移动距离
    PLSQL下载与安装
    硅基流动完成5000万元天使轮融资
    Neo4j学习笔记(一) 安装配置
    C++进阶-STL的简单认识
    [附源码]java毕业设计餐厅卫生安全系统
    C语言实现-排序2
    如何保护我们的网络安全
    怎样重置ubuntu mysql8密码
  • 原文地址:https://blog.csdn.net/qq_69683957/article/details/126327806