zoukankan      html  css  js  c++  java
  • 算法与数据结构实验题 4.3 不知道取什么好

    1、题目:

    2、代码:

    #include<iostream>
    #include<algorithm>
    using namespace std;
    //以这组数据为例说明:10 2
    //1 4 7 4 9 6 5 9 8 4
    int main()
    {
    	int n,m;
    	cin>>n>>m;
    	m=m-1;
    	int i,j=0;
    	int a[1001],b[1001],c[1001];
    	for(i=0; i<n; i++)
    	{
    		cin>>a[i];
    		b[i]=a[i];
    		c[i]=a[i];
    	}
    	sort(b,b+n);//找出最大值
    	int count;
    	//找到第一个最大值所在位置
    	for(i=0; i<n; i++)
    	{
    		if(a[i]==b[n-1])
    		{
    			count=i;
    			break;
    		}
    	}
    	//对数组a进行第一次重新排列,变成 9 6 5 9 8 4 1 4 7 4
    	int num=count;
    	for(i=0; i<n; i++)
    	{
    		if(i<n-num)
    		{
    			a[i]=c[count];
    			count++;
    		}
    		else
    		{
    			a[i]=c[j];
    			j++;
    		}
    	}
    
    	int k;
    	if(m<num)
    	{
    		k=n-num+m;//此时我们原来的第二个数据变成了现在数组中的a[7];
    	}
    	else
    	{
    		k=m-num;
    	}
    	int count1=0,count2=0,count3;
    	//重新排列之后,计算在所要输出的数字前后比它大的数有多少
    	for(i=0; i<k; i++)
    	{
    		if(a[i]>=a[k])
    		{
    			count1++;//在要求输出的数之前的与之相等的数一定比它先输出
    		}
    	}
    	for(i=k+1; i<n; i++)
    	{
    		if(a[i]>a[k])
    		{
    			count2++;//比它大的数一定先输出
    		}
    		if(a[i]==a[k])
    		{
    			count3++;
    		}
    	}
    	//如果在要求输出的数之前比它大的数的个数大于之后的个数时,
    	//之后序列里的与之相等的数一定不会输出,反之则一定输出
    	//比如,若要求输出7后面的4,则8后面的4一定先比7后的4先输出
    	if(count1<=count2)
    	{
    		cout<<count1+count2+count3+1<<endl;
    	}
    	else
    	{
    		cout<<count1+count2+1<<endl;
    	}
    
    	return 0;
    }
  • 相关阅读:
    浅谈Java中的对象和对象引用
    学习Python要知道哪些重要的库和工具
    Python新手最容易犯的十大错误
    java截取字符串中的数字
    Android 多语言
    R语言学习笔记(二): 类与泛型函数
    R语言学习笔记(一):mode, class, typeof的区别
    代理实现方式
    如何将链表反转
    同步锁之lock
  • 原文地址:https://www.cnblogs.com/laixiaolian/p/5917078.html
Copyright © 2011-2022 走看看