题目要求:

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

  参考资料:剑指offer第46题

题目分析:

  方法1:利用类的静态成员变量,定义一次之后该类的所有对象都共享该静态成员变量。再利用构造函数实现n次递加即可;

  方法2:利用函数指针;

  方法3:利用虚函数和动态联编(虚函数和动态联编介绍:http://blog.csdn.net/qlping2007/article/details/2177880).

代码实现:

  方法1代码:

#include <iostream>

using namespace std;

class Temp
{
public:
Temp(){++N;Sum += N;}
~Temp(){}
static void Reset(){N = ;Sum = ;}
static unsigned int getSum(){return Sum;}
private:
static unsigned int N;
static unsigned int Sum;
};
unsigned int Temp::N = ;
unsigned int Temp::Sum = ; int main(void)
{
int n = ; Temp::Reset();
Temp *a = new Temp[n];
delete []a;
a = NULL; cout << Temp::getSum() << endl; return ;
}

 

  方法2代码:

#include <iostream>

using namespace std;

typedef unsigned int (*fun)(unsigned int);
unsigned int f2(unsigned int n); int main(void)
{
cout << f2() << endl;
return ;
}
unsigned int f1(unsigned int n)
{
return ;
}
unsigned int f2(unsigned int n)
{
fun f[] = {f1,f2}; return n+f[!!n](n-);
}

  方法3代码:

#include <iostream>

using namespace std;

class A;
A *Array[]; class A
{
public:
virtual unsigned int Sum(unsigned int n)
{
return ;
}
};
class B:public A
{
public:
virtual unsigned int Sum(unsigned int n)
{
return Array[!!n]->Sum(n-)+n;
}
}; int sumSolution(int n); int main(void)
{
cout << sumSolution() << endl;
return ;
}
int sumSolution(int n)
{
A a;
B b;
Array[] = &a;
Array[] = &b; int value = Array[]->Sum(n);
return value;
}

最新文章

  1. 如何访问facebook (转)
  2. 点 击 直 接加我QQ的功能
  3. [转载]Java程序员使用的20几个大数据工具
  4. 20145207《Java程序设计》第6周学习总结
  5. Uva120 Stacks of Flapjacks 翻煎饼
  6. 关于NPC和NP-Hard问题
  7. linux设置语言编码
  8. you can Solve a Geometry Problem too(hdoj1086)
  9. CSS Select 标签取选中文本值
  10. [原创].NET 业务框架开发实战之七 业务层初步构想
  11. 测试BUG记录模板(供参考)
  12. Redis实战 - 3.Hash
  13. 关于使用阿里OSS服务搭建图床和使用PicGO上传图片到图床
  14. CodeForces - 95B(DFS)
  15. WPF触发器(Trigger) - DataTrigger
  16. AS 自定义 Gradle plugin 插件 案例 MD
  17. 探索未知种族之osg类生物---器官初始化二
  18. C语言中文件打开模式(r/w/a/r+/w+/a+/rb/wb/ab/rb+/wb+/ab+)浅析
  19. 7.计算N元等式[穷举]
  20. graphviz 程序生成多种类型图表详解

热门文章

  1. mkcert本地 HTTPS 加密证书生成工具
  2. centos 安装 rtmp nginx 视频流服务器
  3. ios 12 xcode10 新升级的编译报错libstdc++.6.0.9 Multiple commands produce
  4. HTTP 错误 500.0 - Internal Server Error
  5. 通过脚本批量添加AD用户
  6. Windows上PostgreSQL安装配置教程
  7. 抓取oracle建表语句及获取建表ddl语句
  8. 01_3_创建一个Servlet
  9. runtime比较全面的总结
  10. vue-awesome-swiper插件爬坑