zoukankan      html  css  js  c++  java
  • 1048. Find Coins (25)

     距离PAT考试还有14天最重要的是做透每一题

    (1)思路暴力

    会超时

    (2)

    用hash存储每个数被M减之后的数

    注意这里会有重复的值所以要用数组存储其数量

    再仔细思考一下,只要用数组存储每个数的数量即可,遍历的时候判断该数组v[M-i]元素的值是否大于1

    #include <cstdio>
    #include <cstring>
    using namespace std;
    
    int num[1010],N,M;
    
    int main() {
      scanf("%d %d",&N,&M);
      memset(num,0,sizeof(num));
      for(int i=0;i<N;i++) {
        int temp;
        scanf("%d",&temp);
        num[temp]++;
      }
      for(int i=1;i<500;i++) {
        if(num[i]) {
          num[i]--;
          if(num[M-i]) {
        printf("%d %d
    ",i,M-i);
        return 0;
          }
          num[i]++;
        } 
      }
      printf("No Solution");
      return 0;
    }

    未简化时的代码

    #include <cstdio>
    #include <map>
    #include <vector>
    #include <algorithm>
    #include <cstring>
    using namespace std;
    
    int n,m,flag[1000000];
    
    int main() {
      scanf("%d %d",&n,&m);
      vector<int> va;
      map<int,int> ha;
      memset(flag,0,sizeof(flag));
      for(int i=0;i<n;i++) {
        int v;
        scanf("%d",&v);
        flag[v]++;
        ha[v]=m-v;
        va.push_back(v);
      }
    
      sort(va.begin(),va.end());
      int res=0;
      for(int i=0;i<n;i++) {
        if(ha[va[i]] == va[i]) {
          if(flag[va[i]] > 1) {
        res=va[i];
        break;
          } else continue;
        }
        if(ha.find(ha[va[i]]) != ha.end()) {
          res=va[i];
          break;
        }
      }
      if(res == 0) printf("No Solution");
      else printf("%d %d",res,m-res);
      return 0;
    }

  • 相关阅读:
    hdu-2814-Interesting Fibonacci-斐波那契周期节
    servletContext
    Java中的NIO和IO的对比分析
    sessionID和cookie
    会话跟踪session cookie
    C++中的头文件和源文件
    C++ 头文件
    二叉线索树
    C 二叉树 1
    C 二叉树
  • 原文地址:https://www.cnblogs.com/tclan126/p/8570658.html
Copyright © 2011-2022 走看看