zoukankan      html  css  js  c++  java
  • 电话

    精神病院有一个这样的测试。
    给出一个正整数集合,集合中的数各不相同,然后要求病人回答:
    其中有多少个数,恰好等于集合中另外两个(不同的)数之和?

    一开始对题意的理解很重要;我一开始用哈希表,却重复了许多答案 ,导致答案错误

    错误代码如下(如果不想看可以跳过):
    #include<bits/stdc++.h>
    using namespace std;
    bool Hash[20005];
    int main(){
    freopen("telephone.in","r",stdin);
    freopen("telephone.out","w",stdout);
    int n,a,maxa=-1,ans=0;
    cin>>n;
    for(int i=1;i<=n;++i){
    cin>>a;
    Hash[a]=1;
    maxa=max(maxa,a);
    }
    for(int i=1;i<=maxa;++i)
    for(int j=i+1;j<=maxa;++j){
    if(Hash[i]&&Hash[j]&&Hash[i+j]&&i!=j) ans++;
    }
    cout<<ans<<endl;
    return 0;
    }
    标红的地方是有错误的,因为题目只要求算集合中的符合条件的数,
    而我却把i+j当作目标(不同的i,j相加很可能会得到相同的n)
    于是就只得了20分;
    以后一定要认真审题,明白题意。

    正确代码如下:

    #include <cstdio>
    const int N = 200010;
    int n, ans;
    int a[N], f[N];
    int main(){   
        scanf("%d", &n);
        for(int i=1;i<=n;++i) scanf("%d", a + i);
        for(int i=1;i<=n;++i) 
           for(int j=1;j<i;++j)
              f[a[i] + a[j]] = 1;
        for(int i=1;i<=n;++i) if (f[a[i]]) ++ans;
        printf("%d
    ", ans);
        return 0;
    }
  • 相关阅读:
    Android之vector代码修改颜色
    一个关于native sql的程序
    webdynpro 下拉列表控件
    webdynpro tree控件使用
    webdynpro MESSGAE
    webdynpro的select_option示例
    一个简单的webdynpro的ALV示例
    ALV前导零的问题
    自动流水号
    OO的ALV隐藏工具栏的form
  • 原文地址:https://www.cnblogs.com/qiuheqiuji/p/11178088.html
Copyright © 2011-2022 走看看