过年要购物

题目描述:过年了,各大商场都有促销活动,什么满多少减多少,打折,抽奖等等。比如和谐百货就推出优惠活动,以超低价格出售商品。但是,商场为了避免过分亏本,规定某些商品不能同时购买,而且每种超低价商品只能买一件。作为未来的伟大程序猿的你,决定写一个程序来做出最佳判断以节省最多的钱。经过研究,你发现,商场出售的超低价商品中不存在以下这种情况:n(3<=n)种商品,C1,C2......,Cn,其中C(i)和C(i+1)是不能一起购买的(i=1,2,3.....,n-1),而且C1和Cn也不能同时购买。

输入描述:第一行输入两个整数K,M(1<=K<=1000),其中K表示超低价商品数,K种商品的编号依次为1,2,3...,K;M表示不能同时购买的商品对数。接下来的K行,第i行有一个整数Xi表示购买编号为i的商品可以节省的金额(1<=X<=100).接下来的M行,每行两个数A和B,表示A和B不能同时购买,1<=A<=K,1<=B<=K,A!=B.

输出描述:仅输出一个整数,表示能节省的最大金额数。

C语言代码:

#include<stdio.h>
#include<stdlib.h>

int main(){
    int K,M,i;
    int s=0;
    scanf("%d %d",&K,&M);
    int a[K],A[M],B[M];
    for(i=0;i<K;i++){
        scanf("%d",&a[i]);
    }
    for(i=0;i<M;i++){
        scanf("%d %d",&A[i],&B[i]);
        if(A[i]==B[i])
            return -1;
    }
    for(i=0;i<K;i++){
        s+=a[i];
    }
    for(i=1;i<=K;i++){
        if((i==A[i-1]&&i+1==B[i-1])||(A[i-1]==1&&B[i-1]==K)){
            if(a[i-1]>a[i]){
                s-=a[i];
            }
            else s-=a[i-1];
        }
    }
    printf("%d",s);
    
}

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值