求正负数交互序列的和的MFC版

Posted bcbobo21cn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求正负数交互序列的和的MFC版相关的知识,希望对你有一定的参考价值。

这是一道ACM基础题;

输入n,计算f(n) =  - 1 + 2 - 3 + … + ( - 1)^n*n
问题分析:可使用列表法用数组存放结果,获取n后通过数组直接输出;或者分n为正数与负数两种情况讨论;

程序;

#include<stdio.h> 
typedef long long LL;

int main()

	LL n,sum=0;
	scanf("%lld",&n);
	if(n%2==0)
	
		sum=n/2;
	else
	
		sum=(n-1)/2-n;
	
	printf("%lld",sum);
	return 0;

它是分两种情况就计算了;

先手算看一下;

f(n) =  - 1 + 2 - 3 + … + ( - 1)^n*n

(-1)^4*4 = 4
f(4) = -1 + 2 - 3 +4 = 2

(-1)^5*5 = -5
f(5) = -1 + 2 - 3 +4 -5 = -3

(-1)^6*6 = 6
f(6) = -1 + 2 - 3 +4 -5 + 6 = 3

(-1)^7*7 = -7
f(7) = -1 + 2 - 3 +4 -5 + 6 - 7 = -4

(-1)^11*11 = -11
f(11) = -1 + 2 - 3 +4 -5 + 6 - 7 + 8 - 9 + 10 - 11 = -6

MFC做一下;对话框工程;

void CzfDlg::OnBnClickedButton1()

	// TODO: 在此添加控件通知处理程序代码
	int n,sum=0;
	CString strn, strsum;

	GetDlgItem(IDC_EDIT1)->GetWindowTextW(strn);
	n = _ttoi(strn);

	if(n%2==0)
	
		sum=n/2;
	else
	
		sum=(n-1)/2-n;
	
	strsum.Format(_T("%d"), sum);

	SetDlgItemText(IDC_EDIT2,strsum);

运行;

 

 

 

 

 

以上是关于求正负数交互序列的和的MFC版的主要内容,如果未能解决你的问题,请参考以下文章

剑指Offer(Java版)第三十五题:给一个数组,返回它的最大连续子序列的和

输入一个整形数组,数组里有正数也有负数。 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。 求所有子数组的和的最大值。要求时间复杂度为O(n)

能返回一个整数数组中最大子数组的和的小程序

能返回一个整数数组中最大子数组的和的小程序

输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)

最大二维子数组求和~