酒煮青梅392 2023-12-01 13:11 采纳率: 65.2%
浏览 14
已结题

贪心算法求数列极差问题

这是一道用贪心算法来求数列的极差


#include <stdio.h>

/*********  Begin  **********/

void Bubble(int k,int a[],int num)
{
    int i, j,temp;
    for( i = k; i < num-1;i++)
    {
        for(j = k; j < num -1 -i;j++)
        {
            if(a[j]>a[j+1])
            {
    
                temp = a[j];
                a[j] = a[j+1];
                a[j+1]= temp;
            }
        }
    }

   

}

int math_min(int a[],int num)
{
    int i;
    Bubble(0,a,num);
    for(i=num-2;i>=0;i--)
    {
        a[i]=a[i]*a[i+1]+1;
    }
    return a[0];

}

int math_max(int a[],int num)
{
    int i,j;
    Bubble(0,a,num);
    for(i=1;i<=num-1;i++)
    {
        a[i]=a[i]*a[i-1]+1;
        Bubble(i,a,num);
    }
  
    return a[num-1];
 

}



int main()
{
    int i,n,b[100],max,min,num;
    scanf("%d",&num);
    int a[num];
    for (i=0;i<num;i++)
        scanf("%d",&a[i]);
        
        min =math_min(a,num);
        Bubble(0,a,num);
        max = math_max(a,num);
       
        

        printf("Max=max-min=%d-%d=%d",max,min,max-min);


}

img

不知道为啥算的max有错误

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-12-01 18:28
    关注

    【以下回答由 GPT 生成】

    #include <stdio.h>
    
    void Bubble(int k, int a[], int num) {
        int i, j, temp;
        for(i = k; i < num-1; i++) {
            for(j = k; j < num-1-i; j++) {
                if(a[j] > a[j+1]) {
                    temp = a[j];
                    a[j] = a[j+1];
                    a[j+1] = temp;
                }
            }
        }
    }
    
    int math_min(int a[], int num) {
        Bubble(0, a, num);
        for(int i = num-2; i >= 0; i--) {
            a[i] = a[i] * a[i+1] + 1;
        }
        return a[0];
    }
    
    int math_max(int a[], int num) {
        Bubble(0, a, num);
        for(int i = 1; i <= num-1; i++) {
            a[i] = a[i] * a[i-1] + 1;
            Bubble(i, a, num);
        }
        return a[num-1];
    }
    
    int main() {
        int n;
        printf("请输入序列的长度: ");
        scanf("%d", &n);
        int a[n];
        printf("请输入序列的元素: ");
        for(int i = 0; i < n; i++) {
            scanf("%d", &a[i]);
        }
        int min_res = math_min(a, n);
        int max_res = math_max(a, n);
        printf("序列的极差为: %d\n", max_res - min_res);
        return 0;
    }
    

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月15日
  • 已采纳回答 12月7日
  • 创建了问题 12月1日

悬赏问题

  • ¥20 求下下面这个数据结构代码
  • ¥15 路由器考试怎么办,有懂行的吗 ,eNSP
  • ¥20 前端 二进制文件流图片转化异常
  • ¥15 github上的这个C语言项目如何跑起来
  • ¥15 java 判断某个数 区间是否存在
  • ¥15 appium控制多个雷电模拟器问题
  • ¥15 C# iMobileDevice
  • ¥15 谁会做这个啊#ensp#Boson NetSim
  • ¥15 如何编写针对TPS6503320FRGE型号的电源管理芯片的编程代码?
  • ¥15 设计简单目录管理系统,要满足以下内容