問題 B 組數總和

2021-10-03 11:32:55 字數 969 閱讀 7332

題目描述

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 ...