問題:n個互不重復的數,通過加法湊出X,求出有多少種方案?(1<=n<=20,1<=X<=2000)
輸入格式:n,x,n個整數
思路:由于n并不大,可以使用二進制枚舉的方法。簡單題,看代碼就能夠理解
#include <iostream>#include <algorithm>#include <vector>#include <stdio.h>#include <cstring>using namespace std;int num[21];int main(){        int n,x,i,j,temp,tot=0;        scanf("%d%d",&n,&x);        for(i=0;i<n;i++)scanf("%d",&num[i]);        for(i=0;i<(1<<n);i++)        {                temp=0;                for(j=0;j<n;j++)                {                        if(i&(1<<j))//判斷二進制i從右數第j+1位是否為1                                temp+=num[j];                }                if(temp==x)tot++;        }        PRintf("%d",tot);}
新聞熱點
疑難解答