一个射击运动员打靶,靶一共有10环,连开10枪打中90环的可能性有多少种?请用递归算法编程实现。
public class Cs
{
public int times;
public int score;
public int[] loops;
public int count=0;
public static void main(String[] args)
{
Cs cs=new Cs(10,90);
cs.loop(10);
System.out.println(cs.count);
}
public Cs(int times,int score)
{
this.times=times;
this.score=score;
loops=new int[times];
}
public void loop(int cur)
{
if(cur==0)
{
if(score!=0)
return;
count++;
return;
}
cur--;
for(int i=10;i>0;i--)
{
loops[cur]=i;
score-=i; //模拟嵌套for循环
loop(cur);
score+=i; //状态恢复
}
}
}
输入两个整数n和m,从数列1、2、3、...n中任意取几个数,使其和等于m,要求将其中所有可能的组合都列出来
public class Cs
{
public int n;
public int m;
public int[] result;
public int count=0;
public static void main(String[] args)
{
Cs cs=new Cs(10,50);
cs.loop();
System.out.println(cs.count);
}
public Cs(int n,int m)
{
this.n=n;
this.m=m;
result=new int[n];
}
public void loop()
{
int[] loops=new int[n];
result=new int[n];
for(int i=0;i<n;i++)
loops[i]=i+1;
loop(n,loops);
}
private void loop(int cur,int[] _loop)
{
if(m<=0||_loop.length==0)
{
if(m!=0)
return;
count++;
for(int i=0;i<result.length;i++)
System.out.print(result[i]+",");
System.out.println("");
return;
}
cur--;
for(int i=0;i<_loop.length;i++)
{
result[cur]=_loop[i];
m-=_loop[i];
//等到最终结果需要不重复,可以按元素大小排序来得到下一步_loop
int[] _loop_=new int[cur];
for(int j=i+1;j<_loop.length;j++)
_loop_[j-i-1]=_loop[j];
loop(cur,_loop_);
m+=_loop[i]; //状态恢复
}
}
}
原文地址: http://www.cnblogs.com/hujian/archive/2012/03/09/2388430.html
有长宽分别为1x1和1x2的小格子,现在要用这两种小格子拼接成1xN的大格子,请问一共有多少种拼接方案?编程实现之,N可由用户输入。
难点在于想清楚这道题的实质是什么,考察对递归的理解和应用。考虑1xN的大格子最右边的那个格子,如果这个格子是1x1的,则剩余N-1个格子;如果这个格子是1x2的,则剩余N-2个格子,于是得到F(N)=F(N-1)+F(N-2)。可以看到,拼接方案的序列实际上构成了一个Fibonacci数列。
用递归算法判断数组a[N]是否为一个递增数组。
递归的方法,记录当前最大的,并且判断当前的是否比这个还大,大则继续,否则返回false结束:
bool fun( int a[], int n )
{
if( n= =1 )
return true;
if( n= =2 )
return a[n-1] >= a[n-2];
return fun( a,n-1) && ( a[n-1] >= a[n-2] );
}
分享到:
相关推荐
以下是一些可能出现在Java高级工程师笔试题中的重要概念和主题: 1. **多线程与并发**:Java的并发处理能力是其强大之处,涉及到线程池、synchronized关键字、volatile、ThreadLocal、死锁、活锁和饥饿状态的理解及...
盘古搜索笔试题知识点总结 一、选择题 1. 宏定义和函数调用:了解宏定义的使用和函数调用的执行顺序。 2. 排序算法:了解快排序和冒泡排序的原理和实现。 3. C++ 语言基础:了解 C++ 中字符串的使用和引用变量的...
C++ 笔试题汇总 C++ 笔试题汇总是对 C++ 语言基础知识的总结和实践,涵盖了链表反转、字符串处理、运算符重载、引用和指针等多个知识点。本文通过实际代码示例和问题分析,帮助读者更好地理解和掌握 C++ 语言的基础...
【标题】:“校招C&C++笔试题大全” 在求职过程中,尤其是对于计算机科学和技术相关专业的学生来说,参加公司的校园招聘笔试是至关重要的一步。"校招C&C++笔试题大全"是一个集各大公司历年校招笔试题目的资源库,...
本节知识点详细解析高通笔试题中的10道笔试题,涵盖嵌入式C开发人员所需的各种知识点,包括volatile关键字、类型转换、递归调用、指针、多维数组、逗号表达式、指针数组、函数指针和自加操作等。 题目1:volatile...
笔试题主要考察应聘者的编程和算法能力,尤其是递归算法的应用。下面将详细介绍笔试中提及的几个关键知识点: 1. 二叉树的递归搜索 在笔试的第一部分,要求实现一个函数`search`来在一棵排序二叉树中递归搜索一个...
在IT行业中,笔试题是评估求职者技能的重要环节,尤其是对于C语言程序员而言。C语言是一种基础且强大的编程语言,广泛应用于系统开发、嵌入式系统、游戏开发等领域。智力题则测试候选人的逻辑思维、问题解决能力和...
嵌入式软件工程师笔试题.pdf 本资源是一份嵌入式软件工程师笔试题,涵盖了多个嵌入式软件开发中的知识点,包括字符串逆序、链表逆序、字节位计算、字节搜索、字符串转换等。 题目1:将一个字符串逆序 在这道题中...
以下是一些可能出现在这些笔试题中的重要知识点: 1. **C/C++语言基础**:作为嵌入式开发的基础,C/C++语言的理解和熟练运用至关重要。笔试中可能包含对语法、指针、内存管理、结构体与联合体、函数、预处理器等...
根据给定的信息,我们可以从...综上所述,这份笔试题目涵盖了Java语言的基础知识,如异常处理、递归算法、抽象类与接口的区别以及多线程等重要概念。通过理解和掌握这些知识点,可以帮助开发者更好地进行Java编程实践。
本压缩包“C&C++笔试题”包含了大量针对C/C++程序员的笔试题目,旨在帮助求职者了解当前的面试趋势,自我评估技能水平,并为面试做好充分准备。 1. **基本语法与数据类型** - C/C++的基础始于了解各种数据类型,如...
### C/C++经典笔试题汇总知识点解析 #### 题目一:单向链表的反转 **知识点:** 1. **链表基础知识**:理解单向链表的基本结构(包含节点、节点间的链接关系等)。 2. **迭代反转算法**:掌握如何通过迭代方式实现...
在IT行业的招聘过程中,尤其是针对技术岗位,C语言笔试题是常见的一种考核方式。这些题目不仅测试应聘者的基础编程能力,还考察逻辑思维、问题解决和算法理解等多方面技能。以下将根据提供的标题和描述,结合C题的...
NHN笔试题可能会要求你用逻辑清晰的方式解决实际问题,例如通过递归、动态规划或贪心算法来解决问题。此外,对时间复杂度和空间复杂度的理解是衡量解决方案效率的重要标准,你需要学会分析代码运行时间和内存占用。 ...
- 从1-100中选择10个不同的数的所有组合,可以通过递归算法或回溯算法实现。 ### 7. 大端小端判断 - 可以通过创建一个整数,然后检查其低位字节来简单地判断。 - 示例代码: ```cpp union { int i; char c...
这份393页的面试笔试题集合无疑为准备IT岗位的求职者提供了一份宝贵的资源。 首先,我们可以从标题推测,这是一份全面的资料,包含了IT领域的多个方面,可能是从基础的计算机基础知识到高级的技术专题,旨在检验和...
【IBM 笔试题 中文+英文】 IBM,全称国际商业机器公司,是全球领先的科技巨头,尤其在信息技术领域有着深远的影响力。IBM的笔试题是求职者在申请该公司职位时经常会遇到的一环,旨在评估候选人的技术能力、逻辑思维...
常见的算法题型包括但不限于排序(冒泡排序、快速排序、归并排序等)、查找(二分查找、哈希查找等)、图论(深度优先搜索、广度优先搜索、最短路径算法等)、动态规划、递归和回溯等。对于数据结构,如栈、队列、...
《C/C++笔试题集锦》是一份涵盖了广泛C/C++知识的资源,旨在帮助求职者准备相关的技术面试和笔试。这份资料不仅包含了常见的C/C++编程题目,还深入探讨了语言的一些关键概念,如类型转换和对象模型,这对于理解和...