zoukankan      html  css  js  c++  java
  • 算法初步——哈希表A1048Find Coins

    思路: two pointers

    #include <bits/stdc++.h>
    #include<math.h>
    #include <string>
    using namespace std;
    const int MAX_LEN = 100005;
    bool cmp(int a,int b){
        return a>b;
    }
    int main(){
        //int temp[MAX_LEN];
        /*for(int i=0;i<MAX_LEN;++i){
            temp[i] = 0;
        }*/
        int n,m;
        cin>>n;
        cin>>m;
        int temp[n];
        for(int i=0;i<n;++i){
            cin>>temp[i];
        }
        sort(temp,temp+n,cmp);
        /*int count = 0;
        for(int i=0;i<MAX_LEN;++i){
            if(temp[i] > 0){
                count++;
            }
        }*/
        int fir = n-1;
        int end = 0;
        while(end != fir){
            if(temp[fir] + temp[end] < m){
                fir--;
            }
            if(temp[fir] + temp[end] > m){
                end++;
             }
             if(temp[fir] + temp[end] == m){
                 cout<<temp[fir]<<" "<<temp[end];
                 break;
             }   
        }
        if(end == fir){
            cout<<"No Solution";
        }
        system("pause");
        return 0;
    } 

    注意要continue

    #include <bits/stdc++.h>
    #include<math.h>
    #include <string>
    using namespace std;
    const int MAX_LEN = 100005;
    bool cmp(int a,int b){
        return a>b;
    }
    int main(){
        //int temp[MAX_LEN];
        /*for(int i=0;i<MAX_LEN;++i){
            temp[i] = 0;
        }*/
        int n,m;
        cin>>n;
        cin>>m;
        int temp[n];
        for(int i=0;i<n;++i){
            cin>>temp[i];
        }
        sort(temp,temp+n,cmp);
        /*int count = 0;
        for(int i=0;i<MAX_LEN;++i){
            if(temp[i] > 0){
                count++;
            }
        }*/
        int fir = n-1;
        int end = 0;
        while(end != fir){
            if(temp[fir] + temp[end] < m){
                fir--;
                continue;//注意要continue 
            }
            if(temp[fir] + temp[end] > m){
                end++;
                continue;//注意要continue 
             }
             if(temp[fir] + temp[end] == m){
                 cout<<temp[fir]<<" "<<temp[end];
                 break;
             }   
        }
        if(end == fir){
            cout<<"No Solution";
        }
        system("pause");
        return 0;
    } 
  • 相关阅读:
    项目人力资源管理
    以太网交换机
    邮件协议简单学习
    信息系统开发方法
    项目成本管理
    oracle学习笔记002---oracle的体系结构
    007 项目进度管理
    乘法逆元
    RMQ __ST
    中国剩余定理(CRT)
  • 原文地址:https://www.cnblogs.com/JasonPeng1/p/12163089.html
Copyright © 2011-2022 走看看