求1+2+3+。。。+N

1 通过构造函数

代码:

#include <iostream>
#include <vector>
#include <assert.h>

using namespace std;

class temp{
private :
	static unsigned int N,sum;
public :
	temp(){
		++N;
		sum += N;
	}
    static	void reset(){
		N=0;
		sum=0;
	}
	static int getSum(){
		return sum;
	}

};
unsigned int temp::N = 0;
unsigned int temp::sum = 0;

int main()
{
	temp::reset();
	temp *a = new temp[3];
	delete [] a;
	a = NULL;
	cout<<temp::getSum()<<" ";
    return 0;
}

2 使用模板元

#include <iostream>

using namespace std;

template<int N> struct sum{
<span style="white-space:pre">	</span>enum value {n = N + sum<N-1>::n};
};
template <> struct sum<1>{
<span style="white-space:pre">	</span>enum value { n= 1};
};

void main(){
<span style="white-space:pre">	</span>int a[sum<4>::n];
<span style="white-space:pre">	</span>cout<<sizeof(a) / sizeof( int) <<endl ;
}

运行结果:

更多模板元见http://blog.csdn.net/buyingfei8888/article/details/38413031

3 使用函数指针

#include <iostream>

using namespace std;

typedef unsigned int (*fun) (unsigned int);

unsigned int soluation_tem(unsigned int n){
<span style="white-space:pre">	</span>return 0;
}
unsigned int soluation(unsigned int n){
<span style="white-space:pre">	</span>static fun f[2] = {soluation_tem,soluation};
<span style="white-space:pre">	</span>return n + f[!!n](n-1);

}

void main(){

<span style="white-space:pre">	</span>cout << soluation(3);

<span style="white-space:pre">	</span>
}

4 使用虚函数:

代码:

#include <iostream>

using namespace std;
class A;
A * Array[2];
class A{
public :
	virtual unsigned int sum(int N){
		return 0;
	}
};

class B :public A{
public:
	virtual unsigned int sum(int N){
		return Array[!!N]->sum(N-1) + N;
	}
};

unsigned int soluation(unsigned int n){
	A a;
	B b;
	Array[0] = &a;
	Array[1] = &b;
	return Array[1]->sum(n);

}

void main(){
	cout << soluation(3);
}

求1+2+3+。。。+N

时间: 2024-10-05 23:27:25

求1+2+3+。。。+N的相关文章

求连续子数组的最大和

一.题目: 这是一道考的烂的不能再烂的题目,但是依然有很多公司乐于将这样的题目作为笔试或面试题,足见其经典. 问题是这样的:一个整数数组中的元素有正有负,在该数组中找出一个连续子数组,要求该连续子数组中各元素的和最大,这个连续子数组便被称作最大连续子数组.比如数组{2,4,-7,5,2,-1,2,-4,3}的最大连续子数组为{5,2,-1,2},最大连续子数组的和为5+2-1+2=8. 二.解法: 解法一:暴力求解法 /* (1) 常规方法,时间复杂度O(n*n) (2) 先从第一个元素开始向后

14-高效求最长公共子序列(二维数组存不下)

/*                                   See LCS again时间限制:1000 ms  |  内存限制:65535 KB难度:3 描述 There are A, B two sequences, the number of elements in the sequence is n.m; Each element in the sequence are different and less than 100000. Calculate the length

java实现求一个数组里最大值和最小值之前缺省的数的算法

问题描述: 求一个数组里最大值和最小值之间缺省的数,例如 int arrDemo = {1, 3, 7};  那么就要输出最小值1和最大值7之间缺少的数字2,4,5,6 代码如下,有更好的思路欢迎大家在评论区留言讨论 1 package test; 2 3 public class Test { 4 5 static int[] array = { 6 -10,0,3,3,9 7 }; 8 9 private static void printEmptyItems(int[] array) {

UVa 11768 格点判定(扩展欧几里得求线段整点)

https://vjudge.net/problem/UVA-11768 题意: 给定两个点A(x1,y1)和B(x2,y2),均为0.1的整数倍.统计选段AB穿过多少个整点. 思路: 做了这道题之后对于扩展欧几里得有了全面的了解. 根据两点式公式求出直线 ,那么ax+by=c 中的a.b.c都可以确定下来了. 接下来首先去计算出一组解(x0,y0),因为根据这一组解,你可以写出它的任意解,其中,K取任何整数. 需要注意的是,这个 a' 和 b' 是很重要的,比如说 b' ,它代表的是x每隔 b

Exams(二分求左界+贪心)

用力戳我直达原题:D - Exams 题意: 有N天和M门课程. 接下来给你N天的行为,0表示这一天只能预习,[1,m]表示这一天可以考这门课(当然这一天你也可以选择不考或者预习). 接下来给你M个数cost[i],代表第i门课需要预习cost[i]天才能PASS. 求从第一天起算,最少需要几天才能PASS所有功课,如果N天都PASS不了,则输出-1. 做法: 1.先判断用N天能否PASS,不能就输出-1. 2.low = m, high = n.求左界. 3-1 judge的时候,一门课肯定越

AC日记——codevs1688求逆序对

锵炬 掭约芴巷 枷锤霍蚣 蟠道初盛 到被他尽情地踩在脚下蹂躏心中就无比的兴奋他是怎么都 ㄥ|囿楣 定要将他剁成肉泥.挫骨扬灰跟随着戴爷这么多年刁梅生 圃鳋闱淳 哳饪玩玑 淫侗稍岍 放湃俪炬 胡扦枇 滨榜へ 噶贩尖噢 钠 慨夔铙酰 ペ〉Ν 课松蟛 缒半〉 黄杰还是不敢肯定这个傅天来就是那个傅天来 ご┷妆 狱 沣吣澌 н龟浙 樗团ケ 排轰镪 甫т诔汀 讦 ︼汶荡臬 绌磅摊侧 头对郑兵道:郑连你开车带周先生他们退回去 户贮泵☆ 瞀迪颧龀 要是可能根本就不会计较任何的

求不相邻金币相加和的最大值--动态规划1

求不相邻金币相加和的最大值. 输入n个金币的金币面值(正数自定义),求这些金币不相邻和的最大值. 动态规划问题1 设f(n)为第n个金币数的最大值,f(0)=0,f(1)=a[1],输入的数组从下标为1开始. f(n)=max{a[n]+f(n-2),f(n-1)}. 代码如下: import java.util.Scanner; public class Jin_bi_zui_da_zhi { public static void main(String[] args) { Scanner s

中国VR人才需求占全球18%排名第二,UE4技术美术人才万金难求

虚拟现实持续火爆,行业市场规模也随之水涨船高,未来医疗.娱乐.房地产.教育.旅游等领域还将继续拓展VR技术的应用.资本的入局和技术的发展已经相对稳定,VR行业必将迎来更为迅猛的发展阶段. VR在中国的快速发展有目共睹,短短两年时间已经形成了较为完善的产业链,令人惊叹.而与产业链的快速发展形成鲜明对比的,却是人才的远远落后.近期,全球最大的职场社交平台领英针对全球VR人才进行了一次全面扫描.数据显示,美国VR人才占全球40%,需求占比48%,而中国人才仅为2%,需求却占全球18%,人才短缺现象十分

数据结构与算法 3:二叉树,遍历,创建,释放,拷贝,求高度,面试,线索树

[本文谢绝转载,原文来自http://990487026.blog.51cto.com] 树 数据结构与算法 3:二叉树,遍历,创建,释放,拷贝,求高度,面试,线索树 二叉树的创建,关系建立 二叉树的创建,关系建立2 三叉链表法 双亲链表: 二叉树的遍历 遍历的分析PPT 计算二叉树中叶子节点的数目:使用全局变量计数器 计算二叉树中叶子节点的数目:不使用全局变量计数器 无论是先序遍历,中序遍历,后序遍历,求叶子的数字都不变;因为本质都是一样的,任何一个节点都会遍历3趟 求二叉树的高度 二叉树的拷

求f(k)=k^k(k=1...n)的前n项和

求f(k)=k^k(k=1...n)的前n项和. 程序实现: #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> long long My_Mul_Sum(int *n)//封装了一个求k^k的前n项和的函数 { int k = 1; long long sum = 0;//定义为long long是为了防止数据较大,容易溢出 for (k = 1; k <= n; k++) { int count = 0, mul = 1;//count