数字组合

    xiaoxiao2023-03-24  2

    描述 有n个正整数,找出其中和为t(t也是正整数)的可能的组合方式。如: n=5,5个数分别为1,2,3,4,5,t=5; 那么可能的组合有5=1+4和5=2+3和5=5三种组合方式。 输入 输入的第一行是两个正整数n和t,用空格隔开,其中1<=n<=20,表示正整数的个数,t为要求的和(1<=t<=1000) 接下来的一行是n个正整数,用空格隔开。 输出 和为t的不同的组合方式的数目。 样例输入 5 5 1 2 3 4 5 样例输出 3

    暴力

    #include<iostream> #include<algorithm> using namespace std; int a[100010],ans,n,t; bool cp(int x,int y) { return x<y; } void dfs(int d,int num) { if(d==n+1) { if(num==t) ans++; return; } dfs(d+1,num+a[d]); dfs(d+1,num); } int main() { cin>>n>>t; for(int i=1;i<=n;i++) cin>>a[i]; sort(a+1,a+n+1,cp); dfs(1,0); cout<<ans<<endl; return 0; }

    转载请注明原文地址: https://ju.6miu.com/read-1202041.html
    最新回复(0)