栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

蓝桥杯每日一练-c++喜羊羊与灰太狼(3)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

蓝桥杯每日一练-c++喜羊羊与灰太狼(3)

描述

接上集与上上集又双双叒叒叒叕叕叕叕说道(与上集和上上集没有任何关系),虽然红太狼和灰太狼停止了争论。但是,当他们回头查看小羊的时候,小羊们已经没有在原来的位置上了。

在喜羊羊和小伙伴们的努力下,小羊们挣脱绳索跑出了狼屋,现在在他们面前有一道悬崖,如果不想办法尽快离开这个地方,灰太狼还会再把他们抓回去的。

此时,懒羊羊大声喊道:“快看啊,这边有一些热气球,我们可以乘上热气球离开!”

已知热气球数量为 s, 单个热气球最大承重是 200 千克。按照编号,小羊们各自的体重为wi​​千克。现在小羊们正在利用有限的时间,商量着哪只羊去乘坐哪个热气球。

当然,商量的过程并没有什么好看的。作为观众,你突然来了兴趣,想要写一个程序,统计一下羊们有多少种不同的乘坐方案。(只要有一只羊的位置不同,就认为是乘坐方案不同)

输入

第一行有 2 个整数,分别为 n,s;

第二行有 n 个整数,分别为小羊们的体重 wi​。

输出

输出一个整数,表示所有可行的乘坐方案的数量。

样例

①输入

5 2
170 24 32 44 63

①输出

4

②输入

4 3
91 97 143 123

②输出

6
提示 数据范围

1≤n,s≤10

wi​≤200

样例1说明

小羊们逃跑时乘坐的热气球编号方案如下:

方案一:1 1 2 2 2

方案二:1 2 2 2 2

方案三:2 1 1 1 1

方案四:2 2 1 1 1

共有4种方案,所以答案为4。

既然上两道题都用的dfs,那么这道题用dfs也很简单。思路也是互通的(意思是:思路不知道,自己想)

代码如下:

#include

using namespace std;

int vis[20];

int ans=0;

int n,s,b[100]={0};

bool q[100]={0};

void dfs(int t) { // 羊

if(t>n) {

ans++;

return;

}

for(int i=1; i<=s; i++) {

if(vis[i]+b[t]<=200) {

vis[i]+=b[t];

dfs(t+1);

vis[i]-=b[t];

}

}

} int main() {

cin>>n>>s;

for(int i=1; i<=n; i++) {

cin>>b[i];

}

dfs(1);

cout<

return 0;

}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/955270.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号