摘要:
题目:求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case 等关键字以及条件判断语句(A?B:C)不能使用的东西囊括了基本的编程工具,先来看看能使用的方法有哪些,加减法、位移(左右移操作),1+2+。。。+n的计算公式为n*(n+1)/2n-1能得到,除以2能够用位移操作来完成,将公式拆分为n^2 + n 和除以2两部分,是不是可以用个乘方函数取巧一下?(偷笑)初步想法代码如下:1#include<iostream>2#include<math.h>34usingnamespacestd;56intcompute(intn)7 阅读全文
摘要:
比较老的一道题了,练练手,面向过程的coding1#include<iostream>23usingnamespacestd;4intmain()5{6stringstr="iamastudent.";7inti=0,j=str.length()-1;8chartemp;9while(i<j)10{11temp=str[i];12str[i]=str[j];13str[j]=temp;14i++;15j--;16}17i=0;j=0;18inttemp1,temp2;19while(j<str.length())20{21if(str[j]!= 阅读全文
摘要:
题目:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。看完何海涛的解答,我觉得这个题目可以抽象到一个更高的层次,与某些问题有异曲同工之妙,比如判断单链表是否有环、寻找单链表中的倒数第K个元素,包含min函数的栈等,都是定义两个变量,一个是主变量,一个是辅助变量。程序中,定义了两个变量,一个变量求连续子数组的和,另一个变量的作用是记录这整个过程中最大的那个和。需要考虑到的特殊情况是 1、异常输入,比如数组长度为0;2、数组元素全部为负数的时候,题目退化成寻找最大的元素。根据以上的信息,我们 阅读全文