littleduck_white 2022-11-08 20:18 采纳率: 100%
浏览 115
已结题

求子集的最大值和最小值之和,并返回最大的和

img


输出7


#include<bits/stdc++.h>
using namespace std;
int n;
vector<int>p;
vector<long int>sum;

int main()
{
    scanf("%d",&n);
    int *a=(int*)malloc(n*sizeof(int));
    int max,min;
    int count=0;
    for(int i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
    }
    for(int i=0; i<(1<<n); i++)
    {
        for(int j=0; j<n; j++)
        {
            if(i&(1<<j)&&(i&(1<<(j-1))||i&(1<<(j+1))))
            {
                p.push_back(a[j]);
            }
        }
       int c=-1; 
       vector<int>::iterator itMax=p.begin();
       for(itMax;itMax!=p.end();itMax++)
       {
               if(c<*itMax)
               c=*itMax;
       }
       int d=c+1;
       vector<int>::iterator itMin=p.begin();
       for(itMin;itMin!=p.end();itMin++)
       {
           if(d>*itMin)
           d=*itMin;
       }
       sum.push_back(c+d);
        p.clear();
       
    }
 vector<long int>::iterator it=sum.begin();
 long int k=-1;
 for(it;it!=sum.end();it++)
 {
     if(k<*it)
     k=*it;
 }

  printf("%ld",k);
  
    return 0;
}
范例都过了,但一运行就显示答案错误
思路是先用二进制法求子集,并判断前一个和后一个元素是否在子集内得到元素连续的子集,将子集存储到vector中,判断完一个子集的最大最小值之和就清空vector,储存下一个子集,功力太浅,想不出比这更好的办法了

运行时长已经无所谓了,看这个都看麻了,只想保证结果正确,希望有人能看看到底什么地方导致结果不对,感谢感谢

  • 写回答

3条回答 默认 最新

  • aabond 2022-11-08 23:58
    关注

    这题应该没题主想的那么复杂

    int n;
    int main(void)
    {
        scanf("%d",&n);
        int *a=(int*)malloc(n*sizeof(int));
        int max,min;
        int count=0;
        for(int i=0;i<n;i++)
        {
            scanf("%d",&a[i]);
        }
    
        long long k = 0;
        for(int i=0; i< n; i++)
        {
            long long min = a[i], max = a[i];
            for (int j = i + 1; j < n; j++) {
                min = min > a[j] ? a[j] : min;
                max = max < a[j] ? a[j] : max;
                long long t = min + max;
                k = t > k ? t : k;
            }
        }
        printf("%lld",k);
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 11月17日
  • 已采纳回答 11月9日
  • 赞助了问题酬金15元 11月8日
  • 创建了问题 11月8日

悬赏问题

  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥30 BC260Y用MQTT向阿里云发布主题消息一直错误
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据
  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 Centos / PETGEM
  • ¥15 划分vlan后不通了
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)