题目:求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)。

方法1:使用函数指针。

typedef int (*function)(int);
int func1(int n){
return 0;
}
int func2(int n){
function f[2]={func1,func2};
return n+f[!!n](n-1);
}
void main(){
cout<<func2(10);
}

  方法2:使用构造函数。

class test{
static int N;
static int sum;
public :
test(){sum+=++N;}
static void reset(){N=sum=0;}
static int getSum(){return sum;}
};
int test::N = 0;
int test::sum = 0; void main(){
test::reset();
test *p=new test[10];
cout<<test::getSum();
delete []p;
}

方法3:使用虚函数的编译多态性

class A{
public:
virtual int sum(int n){return 0;};
};
class B:public A
{
public:
int sum(int n){
A a;B b;
A *p[2]={&a,&b};
return n+p[!!(n-1)]->sum(n-1);}
}; void main(){
B b;
cout<<b.sum(10);
}

每天一道算法题(1) ——不用乘除法求和1+2+…+n的更多相关文章

  1. 每天一道算法题(4)——O(1)时间内删除链表节点

    1.思路 假设链表......---A--B--C--D....,要删除B.一般的做法是遍历链表并记录前驱节点,修改指针,时间为O(n).删除节点的实质为更改后驱指针指向.这里,复制C的内容至B(此时 ...

  2. 从一道算法题实现一个文本diff小工具

    众所周知,很多社区都是有内容审核机制的,除了第一次发布,后续的修改也需要审核,最粗暴的方式当然是从头再看一遍,但是编辑肯定想弄死你,显然这样效率比较低,比如就改了一个错别字,再看几遍可能也看不出来,所 ...

  3. 【每天一道算法题】时间复杂度为O(n)的排序

    有1,2,……一直到n的无序数组,求排序算法,并且要求时间复杂度为O(n),空间复杂度为O(1),使用交换,而且一次只能交换两个数. 这个是以前看到的算法题,题目不难.但是要求比较多,排序算法中,时间 ...

  4. 提前批笔试一道算法题的Java实现

    题目描述 这是2021广联达校招提前批笔试算法题之一. 我们希望一个序列中的元素是各不相同的,但是理想和显示往往是有差距的.现在给出一个序列A,其中难免有相同的元素,现在提供了一种变化方式,使得经过若 ...

  5. 每天一道算法题-leetcode136-只出现一次的数字

    前言 打卡第一天 2019.10.26日打卡 算法,即解决问题的方法.同一个问题,使用不同的算法,虽然得到的结果相同,但是耗费的时间和资源是不同的.这就需要我们学习算法,找出哪个算法更好. 大家都知道 ...

  6. 一道算法题加深我对C++中map函数的理解

    一.一道题目引发我对map函数的考量 首先是题目大意:有n个银行,a[i]表示这个人在第i个银行有a[i]块钱(可以是负数),所有银行的钱加起来正好是0.每次只能在相邻的银行之间转账,问最少要转多少次 ...

  7. 【每天一道算法题】Numeric Keypad

    题目描述 The numberic keypad on your mobile phone looks like below: 123 456 789  0  suppose you are hold ...

  8. 《github一天一道算法题》:并归排序

    看书.思考.写代码! /******************************************* * copyright@hustyangju * blog: http://blog.c ...

  9. 一道算法题-八皇后问题(C++实现)

    八皇后问题 一.题意解析 国际象棋中的皇后,可以横向.纵向.斜向移动.如何在一个8X8的棋盘上放置8个皇后,使得任意两个皇后都不在同一条横线.竖线.斜线方向上?八皇后问题是一个古老的问题,于1848年 ...

随机推荐

  1. dos与unix文件格式之间的转换

    1. VI编辑器中转换 在VI中使用命令 set ff?(fileformat)可以查看文件的格式,使用set ff=dos(unix)可以设置文件的格式 2.使用sed处理(来至http://www ...

  2. NVM安装配置

    http://www.kancloud.cn/summer/nodejs-install/71975 配置源 http://www.cnblogs.com/kaiye/p/4937191.html 安 ...

  3. HackerRank - flipping-the-matrix 【数学】

    题意 一个矩阵中 每一行 每一列 都可以倒置 在不断进行倒置后 求 左上的那个 N * N 矩阵 的和 最大为多少 思路 M = 2 * N 通过 倒置特性 我们可以发现,最左上的那个矩阵 第 [I] ...

  4. slam kf

    一.KF 1.从概率来理解概率估计因为希望整个运动估计较长时间内最优,所以反而会用最新的知识去更新之前的状态,就比如在做完当前帧的位姿估计的时候,修改局部地图的路标点.如果站在之前的状态上来考虑,用的 ...

  5. <Perl算法小菜>排序加速--Schwatzian变换及Guttman-Rosler变换

    原创博客,转载请联系博主! perl里的数据都是以双精度为单元存储的,也就是相当于C/Cpp中的double型,而正则的解析是由perl内置的正则引擎完成的,那么除了重写一个属于自己的排序方法之外,我 ...

  6. javascript的40个网页常用小技巧

    下面是javascript的40个网页常用小技巧,对网站开发人员相信会有帮助.1. oncontextmenu="window.event.returnValue=false" 将 ...

  7. Oracle角色管理

    --创建角色 create role role_name [not identified |--无需验证的方式 identified by [password]--密码验证的方式 | identifi ...

  8. IntelliJ IDEA Sringboot 项目部署到外部Tomcat服务器

    <packaging>war</packaging> 添加依赖 <dependency> <groupId>org.springframework.bo ...

  9. CentOS安装wireshark

    yum install wireshark-gnome yum install libpcap

  10. ADO:连接,执行语句与关闭(sql server数据库)

    一,身份验证: sql server数据库连接身份验证有两种:windows身份验证和SQL Server身份验证 windows验证:是使用windows的安全子系统对用户连接进行有效性验证.(个人 ...