`

笔试题小解

 
阅读更多

        最近碰到一个笔试题,大意是从给定的无序数组中选取几个数字使其和为给定的数字,下面以一个数组长为10的整型数组为例,选出其中四个数字之和为10。

        算法使用C++编写,因为来的比较快,Java表达算法不是很给力感觉,代码如下

       

#include<iostream>
#define total 4   //所需要选取出来的个数 
#define arrayLength 10  //数组长度 
using namespace std;

void showResult(int a[]);
int a[arrayLength]={0,1,1,2,9,8,2,4,6,5};
int result[total]={-1,-1,-1,-1};
void  fun(int sum,int beginLoc,int needSelectNum)
{
	if(sum<0)return;
	if(beginLoc>=arrayLength) return;
	if(needSelectNum==1){
		for(int i=beginLoc;i<arrayLength;i++){
			if(sum==a[i]){
				result[total-needSelectNum]=i;
				showResult(result);
			}
		}
		return;
	
	}
	result[total-needSelectNum] =beginLoc;
	fun(sum-a[beginLoc],beginLoc+1,needSelectNum-1);//选 
	fun(sum,beginLoc+1,needSelectNum);	//不选 
	
}
void showResult(int result[]){
	
	for(int i=0;i<total;++i){
		cout<<result[i]<<"  ";
	}
	cout<<endl;
}
int main()
{
   
   //初始值为10 
    int sum=10;
  
    result[0]=0;
    fun(sum-a[0],1,4-1);
    fun(sum,1,4);
    
	
}

    result用来保存最终的四个数的在数组中的位置

    结果如下:

    

0  1  2  5
0  1  7  9
0  2  7  9
0  3  6  8
1  2  3  8
1  2  6  8
1  3  6  9
2  3  6  9

    简单的递归,也只是为了得出结果而已,没有考虑时间复杂度优化,over。

 

     如果是不定个数的和,如求上述中任意和为10的数字序列,代码如下:

    

#include<iostream>
#define total 4   //所需要选取出来的个数 
#define arrayLength 10  //数组长度 
using namespace std;


int result[10]={-1,-1,-1,-1,-1,-1,-1,-1,-1,-1};
int a[arrayLength]={0,1,1,2,9,8,2,4,6,5};

void showResult(int current_loc){
	
	for(int i=0;i<current_loc;i++){
		
		cout<<result[i]<<" ";
	}
	cout<<endl;
} 
void fun( int sum,int begin_loc,int current_loc){
	
	if(sum<0)return ;
	if(begin_loc>=arrayLength)return ;
	if(sum==0){
	    
		showResult(current_loc);	
		return  ;
	}
	
	result[current_loc] =begin_loc;
	fun(sum-a[begin_loc],begin_loc+1,current_loc+1);    //选
	fun(sum,begin_loc+1,current_loc);//不选 
	
} 

int main(){
	
	
    int sum=10;
    int current_loc=0;
    result[current_loc]=0;
    fun(10-a[current_loc],1,current_loc+1);
    fun(10,1,current_loc);
	return 0;
}

   结果如下:

 

0 1 2 3 6 7
0 1 2 3 8
0 1 2 5
0 1 2 6 8
0 1 4
0 2 4
0 3 5
0 3 6 8
0 5 6
0 7 8
1 2 3 6 7
1 2 3 8
1 2 5
1 2 6 8
1 4
2 4
3 5
3 6 8
5 6
7 8

 

 

    其实两者的思维很一样,递归结构也是差不多,over again!

分享到:
评论

相关推荐

    嵌入式软件笔试题合集.zip

    嵌入式软件笔试题合集嵌入式软件笔试题合集嵌入式软件笔试题合集嵌入式软件笔试题合集嵌入式软件笔试题合集嵌入式软件笔试题合集嵌入式软件笔试题合集嵌入式软件笔试题合集嵌入式软件笔试题合集嵌入式软件笔试题合集...

    C++面试题笔试题C++ 数据结构算法笔试题资料合集.zip

    C++面试题笔试题C++ 数据结构算法笔试题资料合集: 50个C、C++面试题.pdf C++ 数据结构、算法笔试题.docx C++基础面试题.docx C++开发工程师面试题库.docx C++技能测试试卷一及答案.docx C++技能测试试卷二及答案....

    中兴笔试题 中兴笔试题 中兴笔试题 中兴笔试题

    中兴笔试题 中兴笔试题 中兴笔试题 中兴笔试题 v中兴笔试题 中兴笔试题 ...中兴笔试题 中兴笔试题 中兴笔试题 中兴笔试题中兴笔试题 中兴笔试题 中兴笔试题 中兴笔试题 中兴笔试题 中兴笔试题 中兴笔试题 中兴笔试题

    java笔试题笔试题

    java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 ...

    华信笔试题笔试题笔试题

    大连华信去年的笔试题,可以给各位即将工作的同学一些参考

    C#笔试题大全C#笔试题大全C#笔试题大全.

    C#笔试题大全C#笔试题大全.C#笔试题大全.C#笔试题大全.C#笔试题大全.C#笔试题大全.C#笔试题大全.C#笔试题大全.C#笔试题大全.C#笔试题大全.C#笔试题大全.C#笔试题大全.C#笔试题大全.C#笔试题大全.C#笔试题大全.,让你...

    2012-2015历年中国移动笔试真题资料移动招聘合集.zip

    2013年四川移动校招笔试题.zip 2014年中国移动招聘笔试试题及答案.pdf 2015年中国移动招聘笔试试题及答案.pdf 移动笔试真题之市场营销类--中国移动校园招聘客服人员试题及答案.pdf 移动笔试真题之技术类--2010年厦门...

    销售人员笔试试题.docx

    2. 销售人员笔试题的分类:销售人员笔试题可以分为选择题、简答题和论述题等。 3. 销售人员笔试题的特点:销售人员笔试题具有多样性、实践性和策略性等特点。 销售人员笔试题的知识点 1. 市场营销战略:无差异...

    c++笔试题汇总c++笔试题汇总.rar

    c++笔试题汇总.rarc++笔试题汇总.rarc++笔试题汇总.rarc++笔试题汇总.rarc++笔试题汇总.rarc++笔试题汇总.rarc++笔试题汇总.rarc++笔试题汇总.rarc++笔试题汇总.rarc++笔试题汇总.rarc++笔试题汇总.rar

    JSD面试笔试题汇总 JSD面试笔试题汇总

    JSD面试笔试题汇总JSD面试笔试题汇总JSD面试笔试题汇总JSD面试笔试题汇总JSD面试笔试题汇总JSD面试笔试题汇总JSD面试笔试题汇总JSD面试笔试题汇总JSD面试笔试题汇总JSD面试笔试题汇总JSD面试笔试题汇总JSD面试笔试题...

    Java笔试题代码.png

    该文件为山大地纬Java开发岗笔试试题 该文件为山大地纬Java开发岗笔试试题 该文件为山大地纬Java开发岗笔试试题 该文件为山大地纬Java开发岗笔试试题 该文件为山大地纬Java开发岗笔试试题

    阿里巴巴校招前端笔试题

    阿里巴巴校招前端笔试题 校招前端笔试题.pages

    2009福富笔试题(java,c/c++)海外,电信

    2009福富笔试题(java,c/c++)海外,电信 以下是从给定的文件信息中生成的相关知识点: 1. 复习要点1.jsp 基础(转向,9 大对象) 知识点:jsp 基础、服务器端编程、Java Web 开发 解释:jsp 是一种服务器端编程语言...

    2021紫光笔试题IC校招笔试题.zip

    《2021紫光笔试题IC校招笔试题》是一个针对集成电路(IC)行业的笔试题目集合,主要针对应届毕业生的招聘过程。紫光集团是中国知名的集成电路设计与制造企业,其笔试题目的涵盖范围广泛,旨在测试应聘者的专业知识、...

    数字马力笔试题.docx

    数字马力笔试题 本文总结了数字马力的笔试题,涵盖了软件测试岗位的简历筛选笔试题,涉及到了接口自动化测试、Java/Python 实现多线程的方法等知识点。 接口自动化测试 在软件测试中,接口自动化测试是一个重要的...

    荣耀笔试题总结.docx

    荣耀笔试题总结.docx

    腾讯产品策划运营类职位笔试题和参考答案

    腾讯产品策划运营类职位笔试题和参考答案腾讯产品策划运营类职位笔试题和参考答案腾讯产品策划运营类职位笔试题和参考答案腾讯产品策划运营类职位笔试题和参考答案腾讯产品策划运营类职位笔试题和参考答案腾讯产品...

    河北省移动公司2014年招聘考试笔试试题及参考答案.docx

    河北省移动公司2014年招聘考试笔试试题及参考答案.docx河北省移动公司2014年招聘考试笔试试题及参考答案.docx河北省移动公司2014年招聘考试笔试试题及参考答案.docx河北省移动公司2014年招聘考试笔试试题及参考答案....

    TI德州仪器笔试题

    应聘笔试题-德州仪器-ti 2008+2010+2011德州仪器笔试题

Global site tag (gtag.js) - Google Analytics