波动数列
2016-03-13 15:27
162 查看
题目要求:
标题:波动数列
观察这个数列:
1 3 0 2 -1 1 -2 ...
这个数列中后一项总是比前一项增加2或者减少3。
栋栋对这种数列很好奇,他想知道长度为 n 和为 s 而且后一项总是比前一项增加a或者减少b的整数数列可能有多少种呢?
【数据格式】
输入的第一行包含四个整数 n s a b,含义如前面说述。
输出一行,包含一个整数,表示满足条件的方案数。由于这个数很大,请输出方案数除以100000007的余数。
例如,输入:
4 10 2 3
程序应该输出:
2
【样例说明】
这两个数列分别是2 4 1 3和7 4 1 -2。
【数据规模与约定】
对于10%的数据,1<=n<=5,0<=s<=5,1<=a,b<=5;
对于30%的数据,1<=n<=30,0<=s<=30,1<=a,b<=30;
对于50%的数据,1<=n<=50,0<=s<=50,1<=a,b<=50;
对于70%的数据,1<=n<=100,0<=s<=500,1<=a, b<=50;
对于100%的数据,1<=n<=1000,-1,000,000,000<=s<=1,000,000,000,1<=a, b<=1,000,000。
资源约定:
峰值内存消耗(含虚拟机) < 256M
CPU消耗 < 2000ms
请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。
所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
注意:不要使用package语句。不要使用jdk1.7及以上版本的特性。
注意:主类的名字必须是:Main,否则按无效代码处理。
输入代码:
总结:
细节很重要,设计一步错,递归就会出现很多错误。
标题:波动数列
观察这个数列:
1 3 0 2 -1 1 -2 ...
这个数列中后一项总是比前一项增加2或者减少3。
栋栋对这种数列很好奇,他想知道长度为 n 和为 s 而且后一项总是比前一项增加a或者减少b的整数数列可能有多少种呢?
【数据格式】
输入的第一行包含四个整数 n s a b,含义如前面说述。
输出一行,包含一个整数,表示满足条件的方案数。由于这个数很大,请输出方案数除以100000007的余数。
例如,输入:
4 10 2 3
程序应该输出:
2
【样例说明】
这两个数列分别是2 4 1 3和7 4 1 -2。
【数据规模与约定】
对于10%的数据,1<=n<=5,0<=s<=5,1<=a,b<=5;
对于30%的数据,1<=n<=30,0<=s<=30,1<=a,b<=30;
对于50%的数据,1<=n<=50,0<=s<=50,1<=a,b<=50;
对于70%的数据,1<=n<=100,0<=s<=500,1<=a, b<=50;
对于100%的数据,1<=n<=1000,-1,000,000,000<=s<=1,000,000,000,1<=a, b<=1,000,000。
资源约定:
峰值内存消耗(含虚拟机) < 256M
CPU消耗 < 2000ms
请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。
所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
注意:不要使用package语句。不要使用jdk1.7及以上版本的特性。
注意:主类的名字必须是:Main,否则按无效代码处理。
输入代码:
/* * 波动数列 */ import java.util.Scanner; public class Main { public static int count=0; public static int sum; public static int a,b,n,s; public static void main(String[] args) { Scanner in=new Scanner(System.in); n=in.nextInt(); s=in.nextInt(); a=in.nextInt(); b=in.nextInt(); for(int i=s-n*b;i<s+n*a;i++) { sum=0; DFS(i,n-1) ; } System.out.println(count); } public static void DFS(int i, int num) { sum+=i; if(num<0) { return; } if(num==0) { if(sum==s) { count++; sum-=i; return ; } else { sum-=i; return; } } DFS(i+a,num-1); DFS(i-b,num-1); sum-=i; } }
总结:
细节很重要,设计一步错,递归就会出现很多错误。
相关文章推荐
- CocoaPods安装及使用
- 图的邻接矩阵存储表示 深度优先和广度优先遍历
- Jetty反向代理
- 单元测试
- 读书这件小事
- 进程描述与控制
- 求一个整数是否可以被3整除
- javascript 函数
- Android Studio--EditText属性
- 写给独立开发兄弟共勉-寂寞是19首诗和2首悲歌
- C. Mail Stamps---cf29c(离散化,图)
- 自学android课程 Android 学习Activity(1)activity和intent
- Opencv Mat数据结构学习
- static修饰变量
- 关键字const的详解
- 3130: [Sdoi2013]费用流
- 第一次上机实验-2
- EF(Linq)框架使用过程中的小技巧汇总
- html标签整理
- 观察者模式