首页 > 其他分享 >数列极差问题(c语言实现)

数列极差问题(c语言实现)

时间:2023-06-20 10:38:24浏览次数:36  
标签:语言 int 极差 ++ fpw txt 数列


4.1题目
算法实现题4-13 数列极差问题
★问题描述:在黑板上写了N个正数组成的一个数列,进行如下操作:每一次擦去其中2个数,设为a和b,然后在数列中加入一个数ab+1,如此下去直至黑板上只剩下一个数。在所有按这种操作方式最后得到的数中,最大的数记为max,最小的数记为min,则该数列的极差M定义为M=max-min。
★算法设计:对于给定的数列,计算出其极差M。
数据输入:由文件input.txt给出输入的数列,第一行是数列的长度N(不超过2000),第二行起是数列中的N个数,相邻2个数由空格分隔。文件名由键盘输入。
结果输出:将计算的数列极差M写入文件output.txt。结果应分两行输出,第一行是数M的位数,第二行是数M。
输入文件示例 输出文件示例
Input.txt output.txt
3 1
1 1 1 0
4.2分析
应用贪婪算法,由小到大运算为最大,由大到小运算为最小,两者相减得极差,再循环除10得其位数。
4.3源代码

#include <iostream>
#include<stdio.h>
void sort(int* p, int size);//顺序冒泡排序
int main()
{
	FILE* fpr, * fpw;
	fopen_s(&fpr, "input.txt", "r");
	fopen_s(&fpw, "output.txt", "w");
	int j, x[100], y[100], a[100], i, n, z = 0, b[2], M;
	fscanf_s(fpr, "%d", &n);
	for (i = 0; i < n; i++)
		fscanf_s(fpr, "%d", a + i);
	sort(a, n);
	for (i = 0; i < n; i++)
	{
		if (i == 0)
			x[0] = a[0] * a[++i] + 1;
		else
			x[z] = x[z - 1] * a[i] + 1;
		z += 1;
	}
	z = 0;
	for (i = n-1; i >= 0; i--)
	{
		if (i == (n - 1))
			y[0] = a[n-1] * a[--i] + 1;
		else
			y[z] = y[z - 1] * a[i] + 1;
		z += 1;
	}
	M = x[z - 1] - y[z - 1];
	printf("极差%d\n", M);
	if (M == 0)
		i = 1;
	else
		for (i = 0; M > 0; i++)
			M /= 10;
	printf("输出为%d位数", i);
	fprintf(fpw, "%d\n", i);
	fprintf(fpw, "%d\n", M);
	fclose(fpr);
	fclose(fpw);
	return 0;
}
void sort(int* p, int size)//顺序冒泡排序
{
	int i, b[10], j, k;
	for (i = 0; i < size - 1; i++)
		for (j = i + 1; j < size; j++)
			if (p[i] > p[j])
			{
				k = p[i];
				p[i] = p[j];
				p[j] = k;
			}

}

4.4运行结果

数列极差问题(c语言实现)_i++


4.5总结

在一次次算法思路求解的过程中对c语言的理解不断加深,虽然距离竞赛水平还差得远,但是毕竟也在一点点进步。


标签:语言,int,极差,++,fpw,txt,数列
From: https://blog.51cto.com/u_16165815/6520880

相关文章

  • 从零开始学Python第04课:Python语言元素之运算符
    Python语言支持很多种运算符,下面的表格按照运算符的优先级从高到低,对Python中的运算符进行了罗列。有了变量和运算符,我们就可以构造各种各样的表达式来解决实际问题。在计算机科学中,表达式是计算机程序中的句法实体,它由一个或多个常量、变量、函数和运算符组合而成,编程语言可以......
  • 从零开始学Python第03课:Python语言中的变量
    对于想学习编程的新手来说,有两个问题可能是他们很想知道的,其一是“什么是(计算机)程序”,其二是“写(计算机)程序能做什么”。先说说我对这两个问题的理解:程序是数据和指令的有序集合,写程序就是用数据和指令控制计算机做我们想让它做的事情。今时今日,为什么有那么多人选择用Python语言......
  • 【蓝桥杯_真题演练】第十届C/C++省赛B组_H-等差数列(C++_gcd_数论)
    ProblemProcess在输入的时候先去重,然后进行排序,至于他们的公差p则需要计算每两个相邻数值之间差值的最大公因数,最终的结果应该是Code#include<bits/stdc++.h>usingnamespacestd;#definelllonglongintn,a[100010],cnt;set<int>s;intgcd(inta,intb){ returnb==......
  • P1062 数列(C++_数论)
    题目描述给定一个正整数k(3≤k≤15),把所有k的方幂及所有有限个互不相等的k的方幂之和构成一个递增的序列,例如,当k=3时,这个序列是:(该序列实际上就是:)请你求出这个序列的第N项的值(用10进制数表示)。例如,对于k=3,N=100,正确答案应该是981。输入格式2个正整数,用一个空格隔开:输出格式1个正整......
  • 【技术积累】自然语言处理中的基础知识【二】
    什么是语言模型概念语言模型是一种自然语言处理技术,用于评估一个句子或句子序列在语言中的概率。它基于统计语言学,尝试建立单词序列的概率分布模型,使该模型能够生成未见过的句子。语言模型是机器翻译、语音识别、自动摘要、对话系统等自然语言处理任务的关键组成部分。语言模型......
  • Python和c语言爬虫如何选择?
    Python是最受欢迎的爬虫语言之一,因为它易于学习和使用,有大量的库和框架可供选择。JavaScript通常用于Web爬虫,因为它可以直接在浏览器中运行,可以轻松地从动态网站中提取数据。java是一种广泛使用的语言,它有很多强大的库和框架,可以用于爬虫。具体用哪个语言做爬虫完全取决于你的项目......
  • Go语言中的原子操作
    1.引言在并发编程中,多个协程同时访问和修改共享数据时,如果没有使用适当的机制来防止并发问题,这个时候可能导致不确定的结果、数据不一致性、逻辑错误等严重后果。而原子操作是解决并发编程中共享数据访问问题的一种常见机制。因此接下来的文章内容将深入介绍原子操作的原理、......
  • 自然语言处理 Paddle NLP - 信息抽取技术及应用
    1.什么是信息抽取即自动从无结构或半结构的文本中抽取出结构化信息的任务(病历抽取)2.实体抽取3.关系抽取4.事件抽取信息抽取和知识图谱是一个上下游的关系。抽取的结果,可以组装成知识图谱(一种存储知识的结构)医疗、金融、法律,三大行业用得比较多从问诊中抽取信息贷款......
  • R语言改进的DCC-MGARCH:动态条件相关系数模型、BP检验分析股市数据
    全文链接:http://tecdat.cn/?p=32818原文出处:拓端数据部落公众号股票市场波动性模型一直是金融领域研究的热点之一。传统的波动性模型往往只考虑了静态条件下的波动性和相关性,难以准确捕捉市场的复杂性和多样性。因此,本文提出了一种基于R语言改进的DCC-MGARCH模型,帮助客户探究动......
  • R语言用CPV模型的房地产信贷信用风险的度量和预测|附代码数据
    全文链接:http://tecdat.cn/?p=30401最近我们被客户要求撰写关于CPV模型的研究报告,包括一些图形和统计输出。本文基于CPV模型,对房地产信贷风险进行了度量与预测。我们被客户要求撰写关于CPV模型的研究报告结果表明,该模型在度量和预测房地产信贷违约率方面具有较好的效果。......