写一个程序, 要求功能:求出用1,2,5这三个数不同个数组合的和为100的组合个数。
如:100个1是一个组合,5个1加19个5是一个组合。。。。 请用C++语言写。
答案:最容易想到的算法是:设x是1的个数,y是2的个数,z是5的个数,number是组合数注意到0=x=100,0=y=50,0=z=20,所以可以编程为:number=0;for (x=0; x=100; x++)for (y=0; y=50; y++)for (z=0; z=20; z++)if ((x+2y+5z)==100)number++;coutnumberendl;
上面这个程序一共要循环1005020次,效率实在是太低了事实上,这个题目是一道明显的数学问题,而不是单纯的编程问题。我的解法如下:因为x+2y+5z=100所以x+2y=100-5z,且z=20 x=100 y=50所以(x+2y)=100,且(x+5z)是偶数对z作循环,求x的可能值如下:z=0, x=100, 98, 96, ... 0z=1, x=95, 93, ..., 1z=2, x=90, 88, ..., 0z=3, x=85, 83, ..., 1z=4, x=80, 78, ..., 0......z=19, x=5, 3, 1z=20, x=0因此,组合总数为100以内的偶数+95以内的奇数+90以内的偶数+...+5以内的奇数+1,即为:(51+48)+(46+43)+(41+38)+(36+33)+(31+28)+(26+23)+(21+18)+(16+13)+(11+8)+(6+3)+1某个偶数m以内的偶数个数(包括0)可以表示为m/2+1=(m+2)/2某个奇数m以内的奇数个数也可以表示为(m+2)/2所以,求总的组合次数可以编程为:number=0;for (int m=0;m=100;m+=5){number+=(m+2)/2;}coutnumberendl;这个程序,只需要循环21次, 两个变量,就可以得到答案,比上面的那个程序高效了许多倍----
只是因为作了一些简单的数学分析这再一次证明了:计算机程序=数据结构+算法,而且算法是程序的灵魂,对任何工程问题,当用软件来实现时,必须选取满足当前的资源限制,用户需求限制,开发时间限制等种种限制条件下的最优算法。而绝不能一拿到手,就立刻用最容易想到的算法编出一个程序了事
【华为硬件笔试题1】
一 选择 13个题目,没有全部抄下来,涉及的课程有电路,模拟电路,数字电路,信号与系统,微机原理,网络,数字信号处理
1.微分电路 2.CISC,RISC 3.数据链路层
二 填空 10个题目,没有全部抄下来,涉及的课程有电路,模拟电路,数字电路,信号与系统,微机原理,网络,数字信号处理 有关于 1.TIC6000 DSP 2.二极管 3.RISC 4.IIR
三 简答 1.x(t)的傅立叶变换为X(jw)=$(w)+$(w-PI)+$(w-5) h(t)=u(t)-u(t-2) 问: (1),x(t)是周期的吗? (2),x(t)h(t)是周期的吗? (3),两个非周期的信号卷积后可周期吗? 2.简述分组交换的特点和不足
四 分析设计 1.波形变换题目 从正弦波->方波->锯齿波->方波,设计电路 2.74161计数器组成计数电路,分析几进制的 3.用D触发器构成2分频电路 4.判断MCS-51单片机的指令正确还是错误,并指出错误原因 (1) MUL R0,R1 (2) MOV A,@R7 (3) MOV A,#3000H (4) MOVC @A+DPTR,A (5) LJMP #1000H () 5.MCS-51单片机中,采用12Mhz时钟,定时器T0采用模式1(16位计数器),请问在下面程序中,p1.0的输出频率 MOV TMOD,#01H SETB TR0 LOOP:MOV TH0,#0B1H MOV TL0,#0E0H LOOP1:JNB TF0,LOOP1 CLR TR0 CPL P1.0 SJMP LOOP
【华为硬件笔试题2】
全都是几本模电数电信号单片机题目
1.用与非门等设计全加法器
2.给出两个门电路让你分析异同
3.名词:sram,ssram,sdram
4.信号与系统:在时域与频域关系
5.信号与系统:和4题差不多
6.晶体振荡器,好像是给出振荡频率让你求周期(应该是单片机的,12分之一周期.. ..)
7.串行通信与同步通信异同,特点,比较
8.RS232c高电平脉冲对应的TTL逻辑是?(负逻辑?)
9.延时问题,判错
10.史密斯特电路,求回差电压
11.VCO是什么,什么参数(压控振荡器?)
12. 用D触发器做个二分颦的电路.又问什么是状态图
13. 什么耐奎斯特定律,怎么由模拟信号转为数字信号
14. 用D触发器做个4进制的计数
15.那种排序方法最快?
【华为硬件笔试题3】
第一部分是:先给你一个 字符与文字对应的表,然后再给你几个文字选出对应的字符组合。 很简单,考察你的速度的,动作要快,应该直接在答题卡上图写答案。 第二部分就是考察智力的,就是找图形数字的规律,然后让你添一个空 还有一些简单的计算,需要速度快,时间有点紧。第三部分就是 一些你日常遇到的情况,你如何解决,这个没有正确答案。接下来就是专业考试了,不同职位内容也不同。ASIC是数字电路的知识(还有点FPGA), 大致如下: 1.简述数据在多时钟域中跨时钟域的几种处理方法。 2.写一个简单逻辑电路的输出,并化简。 3.用硬件描述语言(Verilog HDL或VHDL)写出FIFO控制器的程序。 4.用一个3-8译码器和一个或门 组成一个三人表决器 两个人或者两个以上输入1时,输出为1。 5.用于非门和非门 设计一个两位二进制数的平方器。 6.啥是零点漂移,在多级耦合的运放电路中的危害是啥,给出一个抑制零点漂移的电路,计算输出表达式。 7.用逻辑电路实现一个三位二进制数对3取模的电路。 8.画出RS触发器的电路图。 9.设计一个监测连续3个1的序列监测器,当输入3个或者多于3个1时,输出为1,画出原始状态图,状态表,并化简。
友情提示:阅读了本文“华为软件工程笔试题附答案”,本站思而学教育网(cnrencai)笔试频道,还为你提供更多“笔试题目”相关文章阅读