C语言算法竞赛入门(二)---数组元素移动 、排序问题 、猴子选大王问题

简介: 数组元素移动【问题描述】调整输入数组A[0..n],将其分为两部分,左边所有元素为奇数,右边所有元素为偶数【输入形式】a0,b1,b2,a1,a2,b3,a3,a4【输出形式】a0,a1,a2,a3,a4,b1,b...

数组元素移动

【问题描述】调整输入数组A[0..n],将其分为两部分,左边所有元素为奇数,右边所有元素为偶数
【输入形式】a0,b1,b2,a1,a2,b3,a3,a4
【输出形式】a0,a1,a2,a3,a4,b1,b2,b3
【样例输入】1,2,33,8,5
【样例输出】1,33,5,2,8

代码:

#include<stdio.h>

int main()
{
	int a[100];
	int n=100,i,j,count=1,m;
	for(i=0;i<n;i++)   //循环输入数组数据
	{
		scanf("%d",&a[i]);
		char c=getchar();//getchar函数,从键盘的缓冲区中得到一个字符常量并赋值给c
		if(c=='\n')   //当键盘输入回车时结束输入输入
		{
            break;
		}
		count++;
	}
	scanf("%d",&m);
	for(i=0;i<=count;i++)
	{	
		for(j=i+1;j<=count;j++)
		{
			if(m==(a[i]+a[j]))
			{
				printf("%d %d",a[i],a[j]);
				i=count+1; break;
			}
		}		
	}
	printf("\n");
	return 0;
}

 

排序问题

【问题描述】

输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。
【输入形式】

一个升序排序的数组以空格隔开,以及一个目标数字,换行输入
【输出形式】

如果存在数组中两个数字和为目标数字,则输出数字对;

如果存在多个满足条件的数字对,输入一对即可;

不存在则不输出;
【样例输入】

1 2 4 7 11 15

15

【样例输出】

4 11
【样例说明】

4+11=15
【评分标准】

时间复杂度必须为 O(n),否则酌情给分。

#include<stdio.h>
int main()
{
    int a[100],b[100],c[100];
    int i,count=0,j=0,k=0;
	char s;
	for(i=0;i<100;i++)
	{
		scanf("%d",&a[i]);
		char c=getchar();
		if(c=='\n')
		break;
		scanf("%c",&s);
		count++;
	}
	for(i=0;i<=count;i++)
	{
		if(a[i]%2==1||a[i]%2==-1)
		{
			b[j]=a[i];
			j++;
		}
		if(a[i]%2==0)
		{
			c[k]=a[i];
			k++;
		}		
	}
	printf("%d",b[0]);
	for(i=0;i<j;i++)
		printf(",%d",b[i]);
	for(i=0;i<k;i++)
		printf(",%d",c[i]);
	printf("\n");
    return 0;
}

猴子选大王问题

【问题描述】

N只猴子选大王,选举方法如下:所有猴子按1,2,3,&hellip; ,N编号围坐一圈,从第1个猴子开始报数,报到M号退出圈外,如此循环报数,直到圈内只剩下一个猴子,即为大王。编程输出大王的原始序号。N和M的值由键盘输入。如果你想成为剩下的那一个,在N一定的情况下,你应该站在什么位置上?编程实现位置的求解。
【输入形式】

输入两个数字N和M,N为猴子的个数,M为报到后退出圈外的数字。
【输出形式】

显示最后剩下的猴子的原始序号。

【样例输入】

5 3
【样例输出】

4
【样例说明】

共5个猴子围成一圈,报到3号退出圈外,最后留下的猴子的原始编号为4
【评分标准】

当输入的M,N不合法时应当给出错误提示&ldquo;请输入合法的M,N值!&rdquo;。

#include<stdio.h>

int main()
{
	int n,m;
	int last = 0;
	scanf("%d %d",&m,&n);
	
    if(n<1 || m<1 ) 
	{
		printf("请输入合法的M,N值!\n");
	}else{		
		for (int i=2;i<=m;i++)
		{
			last = (last+n)%i;
		}
		printf("%d\n",last+1);
	}
    return 0;
}

 

目录
相关文章
|
23天前
|
传感器 并行计算 算法
【无人机编队】基于非支配排序遗传算法II NSGA-II高效可行的无人机离线集群仿真研究(Matlab代码实现)
【无人机编队】基于非支配排序遗传算法II NSGA-II高效可行的无人机离线集群仿真研究(Matlab代码实现)
104 3
|
6月前
|
JavaScript 前端开发 算法
JavaScript 中通过Array.sort() 实现多字段排序、排序稳定性、随机排序洗牌算法、优化排序性能,JS中排序算法的使用详解(附实际应用代码)
Array.sort() 是一个功能强大的方法,通过自定义的比较函数,可以处理各种复杂的排序逻辑。无论是简单的数字排序,还是多字段、嵌套对象、分组排序等高级应用,Array.sort() 都能胜任。同时,通过性能优化技巧(如映射排序)和结合其他数组方法(如 reduce),Array.sort() 可以用来实现高效的数据处理逻辑。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
6月前
|
JavaScript 算法 前端开发
JS数组操作方法全景图,全网最全构建完整知识网络!js数组操作方法全集(实现筛选转换、随机排序洗牌算法、复杂数据处理统计等情景详解,附大量源码和易错点解析)
这些方法提供了对数组的全面操作,包括搜索、遍历、转换和聚合等。通过分为原地操作方法、非原地操作方法和其他方法便于您理解和记忆,并熟悉他们各自的使用方法与使用范围。详细的案例与进阶使用,方便您理解数组操作的底层原理。链式调用的几个案例,让您玩转数组操作。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
7月前
|
存储 人工智能 程序员
一文彻底搞明白C语言的数组
本文详细介绍了C语言中的数组,包括定义、初始化(静态与动态)、存储方式、访问方法及常用操作,如遍历、修改元素和作为函数参数传递。数组是C语言中最基本的数据结构之一,掌握它对编程至关重要。下篇将介绍二维数组,敬请期待!
300 0
一文彻底搞明白C语言的数组
|
9月前
|
传感器 算法 安全
【C语言】两个数组比较详解
比较两个数组在C语言中有多种实现方法,选择合适的方法取决于具体的应用场景和性能要求。从逐元素比较到使用`memcmp`函数,再到指针优化,每种方法都有其优点和适用范围。在嵌入式系统中,考虑性能和资源限制尤为重要。通过合理选择和优化,可以有效提高程序的运行效率和可靠性。
633 6
|
10月前
|
存储 缓存 算法
在C语言中,数据结构是构建高效程序的基石。本文探讨了数组、链表、栈、队列、树和图等常见数据结构的特点、应用及实现方式
在C语言中,数据结构是构建高效程序的基石。本文探讨了数组、链表、栈、队列、树和图等常见数据结构的特点、应用及实现方式,强调了合理选择数据结构的重要性,并通过案例分析展示了其在实际项目中的应用,旨在帮助读者提升编程能力。
262 5
|
10月前
|
存储 程序员 编译器
C 语言数组与指针的深度剖析与应用
在C语言中,数组与指针是核心概念,二者既独立又紧密相连。数组是在连续内存中存储相同类型数据的结构,而指针则存储内存地址,二者结合可在数据处理、函数传参等方面发挥巨大作用。掌握它们的特性和关系,对于优化程序性能、灵活处理数据结构至关重要。
|
23天前
|
机器学习/深度学习 算法 新能源
【优化调度】基于matlab粒子群算法求解水火电经济调度优化问题研究(Matlab代码实现)
【优化调度】基于matlab粒子群算法求解水火电经济调度优化问题研究(Matlab代码实现)
|
24天前
|
算法 机器人 定位技术
基于机器视觉和Dijkstra算法的平面建筑群地图路线规划matlab仿真
本程序基于机器视觉与Dijkstra算法,实现平面建筑群地图的路径规划。通过MATLAB 2022A读取地图图像,识别障碍物并进行路径搜索,支持鼠标选择起点与终点,最终显示最优路径及长度,适用于智能导航与机器人路径规划场景。
|
25天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于PSO粒子群优化的XGBoost时间序列预测算法matlab仿真
本程序基于Matlab 2024b实现,结合粒子群优化(PSO)与XGBoost算法,用于时间序列预测。通过PSO优化XGBoost超参数,提升预测精度。程序包含完整注释与操作视频,运行后生成预测效果图及性能评估指标RMSE。

热门文章

最新文章