欢迎光临
我们一直在努力

【PAT甲级真题】- Find Coins (25)

题目来源

Find Coins (25)

题目描述点击链接自行查看

注意点:

  • 多个例子输出最小的那个

思路简介

很简单的双指针 先排序,然后从两头往中间遍历 如果硬币值大就左移右指针(减小数值),否则右移左指针(增加数值) 搜到就直接输出,到最后还没有符合条件的样例输出 "No Solution"

25分真的比20分好拿吧。。。没有奇奇怪怪的模拟难

遇到的问题

  • 忘记写没找到的情况wa了一次。。
  • 代码

    /**
    * https://www.nowcoder.com/pat/5/problem/4087
    * 双指针
    */

    #include<bits/stdc++.h>
    using namespace std;

    void solve(){
    int n,v;
    cin>>n>>v;
    vector<int>num(n);
    for(int i=0;i<n;++i)cin>>num[i];
    sort(num.begin(),num.end());
    int l=0,r=n1;
    while(l<r){
    int tmp=num[l]+num[r];
    if(tmp>v)r;
    if(tmp<v)l++;
    if(tmp==v){
    cout<<num[l]<<' '<<num[r];
    return;
    }
    }
    cout<<"No Solution";
    }

    int main(){
    ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    //fstream in("in.txt",ios::in);cin.rdbuf(in.rdbuf());
    int T=1;
    //cin>>T;
    while(T){
    solve();
    }
    return 0;
    }

    赞(0)
    未经允许不得转载:171主机测评 » 【PAT甲级真题】- Find Coins (25)
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址