題目描述
lzy今天又突發奇想了,他想隨意給出兩個數字n和k,請你找出所有n個數字相加和為k的組合數量。組合中只含有1——9的數字,並且不允許重複。
輸入
測試樣例由多組測試資料組成。每組測試樣例第一行輸入兩個正整數n ( 1 <= n <= 9 ) 和 k < ( 1 <= k <= 45 )。
輸出
輸出所有符合題目要求的組合數量。如果組合不存在,請輸出 no list
樣例輸入
3 73 9
樣例輸出13
**ac**
`#include
using namespace std;
int ans; //統計
int vis[10];//進行標記是否使用過。
int n,k;
void dfs(vector& tmp,int sum)
} //出口
for(int i=1;i<=9;i++)
if(tmp.size()>0&&ik)
vis[i]=1;
sum+=i;
tmp.push_back(i);
dfs(tmp,sum); //進行分支。
vis[i]=0;
sum-=i; //回溯(如果後有不成立);
tmp.pop_back();
}
}
int main()
{while(cin>>n>>k){
ans=0;
memset(vis,0,sizeof(vis));
vector tmp;
dfs(tmp,0);
if(!ans){
cout<<「no list」《注意要定義乙個條件,不然會有許多重複的集合。
問題 B 組數總和
題目描述 lzy今天又突發奇想了,他想隨意給出兩個數字n和k,請你找出所有n個數字相加和為k的組合數量。組合中只含有1 9的數字,並且不允許重複。輸入測試 樣例由多組測試資料組成。每組測試樣例第一行輸入兩個正整數n 1 n 9 和 k 1 k 45 輸出輸出所有符合題目要求的組合數量。如果組合不存在...
3 3 訓練專題(一)問題 B 組數總和
lzy今天又突發奇想了,他想隨意給出兩個數字n和k,請你找出所有n個數字相加和為k的組合數量。組合中只含有1 9的數字,並且不允許重複。測試樣例由多組測試資料組成。每組測試樣例第一行輸入兩個正整數n 1 n 9 和 k 1 k 45 輸出所有符合題目要求的組合數量。如果組合不存在,請輸出 no li...
1999提高組 B 回文數
注意對16進製制字母進行操作 題目描述 若乙個數 首位不為零 從左向右讀與從右向左讀都一樣,我們就將其稱之為回文數。例如 給定乙個 10 進製數 56,將 56 加 65 即把 56 從右向左讀 得到 121 是乙個回文數。又如 對於 10 進製數 87 step1 87 78 165 step2 ...