`
braveCS
  • 浏览: 73752 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

递归(网上搜的一些笔试题)

阅读更多
一个射击运动员打靶,靶一共有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 高级工程师一些笔试题

    以下是一些可能出现在Java高级工程师笔试题中的重要概念和主题: 1. **多线程与并发**:Java的并发处理能力是其强大之处,涉及到线程池、synchronized关键字、volatile、ThreadLocal、死锁、活锁和饥饿状态的理解及...

    盘古搜索笔试题

    盘古搜索笔试题知识点总结 一、选择题 1. 宏定义和函数调用:了解宏定义的使用和函数调用的执行顺序。 2. 排序算法:了解快排序和冒泡排序的原理和实现。 3. C++ 语言基础:了解 C++ 中字符串的使用和引用变量的...

    C++ 笔试题汇总 C++ 笔试题汇总.doc

    C++ 笔试题汇总 C++ 笔试题汇总是对 C++ 语言基础知识的总结和实践,涵盖了链表反转、字符串处理、运算符重载、引用和指针等多个知识点。本文通过实际代码示例和问题分析,帮助读者更好地理解和掌握 C++ 语言的基础...

    校招C&C++笔试题大全

    【标题】:“校招C&C++笔试题大全” 在求职过程中,尤其是对于计算机科学和技术相关专业的学生来说,参加公司的校园招聘笔试是至关重要的一步。"校招C&C++笔试题大全"是一个集各大公司历年校招笔试题目的资源库,...

    高通笔试题--嵌入式C开发人员的最好的0x10道笔试题详细解析.docx

    本节知识点详细解析高通笔试题中的10道笔试题,涵盖嵌入式C开发人员所需的各种知识点,包括volatile关键字、类型转换、递归调用、指针、多维数组、逗号表达式、指针数组、函数指针和自加操作等。 题目1:volatile...

    Google笔试题

    笔试题主要考察应聘者的编程和算法能力,尤其是递归算法的应用。下面将详细介绍笔试中提及的几个关键知识点: 1. 二叉树的递归搜索 在笔试的第一部分,要求实现一个函数`search`来在一棵排序二叉树中递归搜索一个...

    笔试题 笔试题笔试题笔试题

    在IT行业中,笔试题是评估求职者技能的重要环节,尤其是对于C语言程序员而言。C语言是一种基础且强大的编程语言,广泛应用于系统开发、嵌入式系统、游戏开发等领域。智力题则测试候选人的逻辑思维、问题解决能力和...

    嵌入式软件工程师笔试题.pdf

    嵌入式软件工程师笔试题.pdf 本资源是一份嵌入式软件工程师笔试题,涵盖了多个嵌入式软件开发中的知识点,包括字符串逆序、链表逆序、字节位计算、字节搜索、字符串转换等。 题目1:将一个字符串逆序 在这道题中...

    一些公司嵌入式软件工程师的笔试题

    以下是一些可能出现在这些笔试题中的重要知识点: 1. **C/C++语言基础**:作为嵌入式开发的基础,C/C++语言的理解和熟练运用至关重要。笔试中可能包含对语法、指针、内存管理、结构体与联合体、函数、预处理器等...

    神州另一套笔试题JAVA

    根据给定的信息,我们可以从...综上所述,这份笔试题目涵盖了Java语言的基础知识,如异常处理、递归算法、抽象类与接口的区别以及多线程等重要概念。通过理解和掌握这些知识点,可以帮助开发者更好地进行Java编程实践。

    网上最全的C/C++程序员笔试题

    本压缩包“C&C++笔试题”包含了大量针对C/C++程序员的笔试题目,旨在帮助求职者了解当前的面试趋势,自我评估技能水平,并为面试做好充分准备。 1. **基本语法与数据类型** - C/C++的基础始于了解各种数据类型,如...

    C/C++经典笔试题汇总

    ### C/C++经典笔试题汇总知识点解析 #### 题目一:单向链表的反转 **知识点:** 1. **链表基础知识**:理解单向链表的基本结构(包含节点、节点间的链接关系等)。 2. **迭代反转算法**:掌握如何通过迭代方式实现...

    C笔试题(本人亲身考的笔试题)

    在IT行业的招聘过程中,尤其是针对技术岗位,C语言笔试题是常见的一种考核方式。这些题目不仅测试应聘者的基础编程能力,还考察逻辑思维、问题解决和算法理解等多方面技能。以下将根据提供的标题和描述,结合C题的...

    NHN笔试题收集

    NHN笔试题可能会要求你用逻辑清晰的方式解决实际问题,例如通过递归、动态规划或贪心算法来解决问题。此外,对时间复杂度和空间复杂度的理解是衡量解决方案效率的重要标准,你需要学会分析代码运行时间和内存占用。 ...

    深信服技术笔试题及答案

    - 从1-100中选择10个不同的数的所有组合,可以通过递归算法或回溯算法实现。 ### 7. 大端小端判断 - 可以通过创建一个整数,然后检查其低位字节来简单地判断。 - 示例代码: ```cpp union { int i; char c...

    IT类专业最全的面试笔试题集合(总共393页)

    这份393页的面试笔试题集合无疑为准备IT岗位的求职者提供了一份宝贵的资源。 首先,我们可以从标题推测,这是一份全面的资料,包含了IT领域的多个方面,可能是从基础的计算机基础知识到高级的技术专题,旨在检验和...

    IBM 笔试题 中文+英文

    【IBM 笔试题 中文+英文】 IBM,全称国际商业机器公司,是全球领先的科技巨头,尤其在信息技术领域有着深远的影响力。IBM的笔试题是求职者在申请该公司职位时经常会遇到的一环,旨在评估候选人的技术能力、逻辑思维...

    南京300云java招聘笔试题库

    常见的算法题型包括但不限于排序(冒泡排序、快速排序、归并排序等)、查找(二分查找、哈希查找等)、图论(深度优先搜索、广度优先搜索、最短路径算法等)、动态规划、递归和回溯等。对于数据结构,如栈、队列、...

    C/C++笔试题集锦

    《C/C++笔试题集锦》是一份涵盖了广泛C/C++知识的资源,旨在帮助求职者准备相关的技术面试和笔试。这份资料不仅包含了常见的C/C++编程题目,还深入探讨了语言的一些关键概念,如类型转换和对象模型,这对于理解和...

Global site tag (gtag.js) - Google Analytics