基于visual Studio2013解决C语言竞赛题之1059最大平台






题目


解决代码及点评

/*
功能:编写求最大平台问题的程序。
      有n个整数a1,a2, ... an, 若满足a1≤a2≤ ... ≤ an ,
	  则认为在这n个数中有最大平台。在这种情况下,若n个数互不相同,
	  则最大平台值为1,若在n个数中最多有连续m个整数的值相等,则最大平台值为m。
例如: n=10时
     1,2,3,4,5,6,6,7,4,5    无最大平台
     1,1,2,2,2,2,2,2,2,2    最大平台值为8
     1,1,2,2,2,3,3,4,4,5    最大平台值为3
     0,1,2,3,4,5,6,7,8,9    最大平台值为1
 
时间:2:14 2013/10/26
*/

#include<stdio.h>
#include <stdlib.h>

int judgHas59(int *a,int n);		//判断是否有平台
int judg1(int *a,int n);		//最大平台是否为1
int getBiggst(int *a,int n);  //获取最大平台

void main()
{
	const int N=10;
	int a[N];
	for(int i=0;i<N;i++)scanf_s("%d",&a[i]);	//给数组赋值,0-10

	if (judgHas59(a,N)==1)		//判断是否有平台
	{
		if (judg1(a,N)==1)		//判断最大平台是否唯1
		{
			printf("The biggest platform is 1\n");
		} 
		else
		{
			printf("The biggest platform is %d\n",getBiggst(a,N));		//获取最大平台
		}
	} 
	else
	{
		printf("No platform");
	}
	system("pause");
}

int getBiggst(int *a,int n)
{
	int max=0;
	for (int i=0;i<n;i++)
	{
		int s=0;
		for (int j=0;j<n;j++)
		{
			if(a[i]==a[j])s++;
		}
		if(s>max)max=s;			//将当前最大平台赋给max
	}
	return max;
}

int judg1(int *a,int n)
{
	for (int i=0;i<n-1;i++)
	{
		if(a[i]==a[i+1])return 0;	
	}
	return 1;						//表示最大平台为1
}

int judgHas59(int *a,int n)
{
	for (int i=0;i<n-1;i++)
	{
		if(a[i]>a[i+1])return 0; 
	}
	return 1;
}


代码编译以及运行

由于资源上传太多,资源频道经常被锁定无法上传资源,同学们可以打开VS2013自己创建工程,步骤如下:

1)新建工程

2)选择工程

3)创建完工程如下图:

4)增加文件,右键点击项目

5)在弹出菜单里做以下选择

6)添加文件

7)拷贝代码与运行


程序运行结果


代码下载

http://download.csdn.net/detail/yincheng01/6681845

解压密码:c.itcast.cn






posted on 2013-12-10 00:24  三少爷的剑123  阅读(102)  评论(0编辑  收藏  举报

导航