zoukankan      html  css  js  c++  java
  • 洛谷 P1566 加等式

    题目描述

    对于一个整数集合,我们定义“加等式”如下:集合中的某一个元素可以表示成集合内其他元素之和。如集合{1,2,3}中就有一个加等式:3=1+2,而且3=1+2 和3=2+1是相同的加等式,也是这个集合唯一的加等式。给定一个整数集合,编程找出其所有的加等式的个数

    输入输出格式

    输入格式:

     

    第一行为t,表示测试数据组数。(1≤t≤10);

    接下来t 行,每行表示一组测试数据。其中第一个数m(1≤m≤30),表示集合元素的个数,接下来m 个不同的整数x 分别表示集合元素(1≤x≤1000)。

     

    输出格式:

     

    对于每个输入数据,输出一个整数,表示其中加等式的个数。

     

    输入输出样例

    输入样例#1: 复制
    3
    3 1 2 3
    3 1 2 5
    6 1 2 3 5 4 6
    输出样例#1: 复制
    1
    0
    7
    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    int T,m,ans,Max;
    int num[31],f[1010];
    int main(){
        scanf("%d",&T);
        while(T--){
            scanf("%d",&m);
            for(int i=1;i<=m;i++){
                scanf("%d",&num[i]);
                Max=max(Max,num[i]);
            }
            f[0]=1;
            for(int i=1;i<=m;i++)
                for(int j=Max;j>=num[i];j--)
                    f[j]+=f[j-num[i]];
            for(int i=1;i<=m;i++)
                ans+=f[num[i]];
            cout<<ans-m<<endl;
            memset(f,0,sizeof(f));ans=0;
        } 
    }
    100
     
  • 相关阅读:
    vue响应式原理之Observer、Dep、Watcher
    vscode 常用插件
    脚手架搭建vue项目
    搭建框架
    select 自匹配问题
    Winform 根据Point截图并保存到指定路径
    C# Screen 类(多屏幕开发)
    C# WindowsService安装与卸载
    WebService WSDL动态访问
    C# 操作ini文件
  • 原文地址:https://www.cnblogs.com/cangT-Tlan/p/9724844.html
Copyright © 2011-2022 走看看