qduoj 这题别看了,跳过吧(深搜)
Posted xuejye
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了qduoj 这题别看了,跳过吧(深搜)相关的知识,希望对你有一定的参考价值。
题目链接:https://qduoj.com/problem/150/点击打开链接
这题别看了,跳过吧
发布时间: 2017年6月3日 18:46 最后更新: 2017年6月3日 18:47 时间限制: 1000ms 内存限制: 128M
有n个正整数,求从这n个正整数里选任意个数之后加和大于S有多少种选法
第一行输入测试用例的个数T(0<t<=10)。
对于每一个测试用例输入两行,第一行两个正整数,第一个数n(0<n<=10)代表n个正整数,第二个数S(0<S<1000)
第二行输入n个正整数a1...an(0<ai<100)
每个测试用例输出一个数,代表从这n个正整数里选任意个数之后加和大于S的选法
1 4 8 1 2 3 4
2
深搜题 枚举每个数取与不取
递归时候注意防止重复计算
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include<algorithm>
#include <math.h>
#include <string.h>
#include <limits.h>
#include <string>
#include <queue>
#include <stack>
using namespace std;
int num=0;
int a[111];
int m=0;
int n=0;
void dfs(int i,int sum,int flag)
if(i>n)
return;
if(sum>m&&flag)
num++;
dfs(i+1,sum+a[i+1],1);
dfs(i+1,sum,0);
int main()
int t=0;
scanf("%d",&t);
while(t--)
n=0;
m=0;
num=0;
memset(a,0,sizeof(a[0]));
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
dfs(0,0,0);
printf("%d\\n",num);
以上是关于qduoj 这题别看了,跳过吧(深搜)的主要内容,如果未能解决你的问题,请参考以下文章
Oracle大型数据库 作业6 (别看了,真的是空的,补作业用的)