• POJ 算法基础 编程题#1:集合加法


    编程题#1:集合加法

    来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩。)

    注意: 总时间限制: 3000ms 内存限制: 65536kB

     

    描述

    给出2个正整数集合A = {pi | 1 <= i <= a},B = {qj | 1 <= j <= b}和一个正整数s。问题是:使得pi + qj = s的不同的(i, j)对有多少个。

     

    输入

    第1行是测试数据的组数n,后面跟着n组测试数据。

    每组测试数据占5行,第1行是和s (1 <= s <= 10000),第2行是一个正整数a (1 <= a <= 10000),表示A中元素的数目。第3行是a个正整数,每个正整数不超过10000,表示A中的元素。第4行是一个正整数b (1 <= b <= 10000),表示B中元素的数目。第5行是b个正整数,每个正整数不超过10000,表示B中的元素。

    注意:这里的集合和数学书上定义的集合有一点点区别——集合内可能包含相等的正整数。

     

    输出

    n行,每行输出对应一个输入。输出应是一个非负整数。

     

    样例输入

    2
    99
    2
    49 49
    2
    50 50
    11
    9
    1 2 3 4 5 6 7 8 9
    10
    10 9 8 7 6 5 4 3 2 1

    样例输出

    4
    9

     1 #include<iostream>
     2 using namespace std;
     3 int sum, numA, numB;
     4 int arrayA[10001], arrayB[10001];
     5 
     6 int countHelper(int sum, int arrayA[], int numA, int arrayB[], int numB)
     7 {
     8     int count = 0;
     9     for (int i = 0; i < numA; ++i) {
    10         for (int j = 0; j < numB; ++j) {
    11             if (arrayA[i] + arrayB[j] == sum) {
    12                 count++;
    13             }
    14         }
    15     }
    16     return count;
    17 }
    18 
    19 int main()
    20 {
    21     int num;
    22     cin>>num;
    23     while(num--)
    24     {
    25         cin>> sum >> numA;
    26         for (int i = 0; i < numA; ++i) {
    27             cin>>arrayA[i];
    28         }
    29         cin>>numB;
    30         for (int j = 0; j < numB; ++j) {
    31             cin>>arrayB[j];
    32         }
    33         int count = countHelper(sum, arrayA, numA, arrayB, numB);
    34         cout<<count<<endl;
    35     }
    36 
    37     return 0;
    38 }
  • 相关阅读:
    学习asp.net完整步骤
    UltraEdit中Matlab语法高亮显示的操作方法
    C#基础完成和深入
    75道程序员面试逻辑思维题
    模拟退火算法解决函数优化问题
    模拟退火算法解决TSP问题
    C#入门
    简单感知器模型解决简单真值表问题
    jQuery 1.3.2 :visible选择器问题
    NUnit2.0详细使用方法
  • 原文地址:https://www.cnblogs.com/dagon/p/4849523.html
Copyright © 2020-2023  润新知