• PAT甲题题解-1048. Find Coins (25)-水


    给n,m以及n个硬币

    问,是否存在两个硬币面值v1+v2=m

    因为面值不会超过500,所以实际上最多500个不同的硬币而已

    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    #include <string.h>
    
    using namespace std;
    const int maxn=100000+5;
    int coin[maxn];
    int n,m;
    int main()
    {
        scanf("%d %d",&n,&m);
        for(int i=0;i<n;i++){
            scanf("%d",&coin[i]);
        }
        sort(coin,coin+n);
        int cnt=0;
        int tmp[maxn];
        tmp[cnt++]=coin[0];
        int num[maxn];  //统计该硬币出现的次数,因为可能m=a+a
        //因为硬币的大小不会超过500,所以实际上最多有500个不同的硬币
        for(int i=1;i<n;i++){
            if(coin[i]!=coin[i-1]){
                num[cnt]++;
                tmp[cnt++]=coin[i];
            }
            else{
                num[cnt-1]++;
            }
        }
        bool flag=false;
        for(int i=0;i<cnt;i++){
            int j=num[i]>=2?i:i+1;
            for(;j<cnt;j++){
                if(tmp[i]+tmp[j]==m){
                    printf("%d %d
    ",tmp[i],tmp[j]);
                    flag=true;
                    break;
                }
            }
            if(flag)
                break;
        }
        if(!flag)
            printf("No Solution
    ");
        return 0;
    }
    View Code
  • 相关阅读:
    F查询和Q查询
    Django ORM 常用字段和参数
    Django的路由系统
    Django模板系统
    Django中的视图(view)
    Django应用app创建及ORM
    TP90,TP99,TP999,MAX含义
    TDD、BDD、ATDD、DDD 软件驱动开发模式比较
    liunx 安装chrome的方法
    nginx 反向代理mysql
  • 原文地址:https://www.cnblogs.com/chenxiwenruo/p/6677123.html
Copyright © 2020-2023  润新知