其他分享
首页 > 其他分享> > 给定一个数组,期望通过一种处理方法使得这个数组中的每一个数字都大于等于给定的值k

给定一个数组,期望通过一种处理方法使得这个数组中的每一个数字都大于等于给定的值k

作者:互联网

给定一个数组,期望通过一种处理方法使得这个数组中的每一个数字都大于等于给定的值k.具体的处理步骤如下:
【1】将最小的两个数字按照规则合并成一个新数字:新数字=最小的数字+2x倒数第二小的数组
【2】重复以上步骤,直到数组中所有的数字都大于等于k.通过程序计算处理给定的数组上述步骤需要重复多少次.示例:
k=9
A=[2,3,6,6,7,4]
最小的数字是2,3.将2,3在数组中移除,并添加2+2x3=8, A=[8,6,6,7,4]
将4,6在数组中移除,并添加4+2×6=16, A=[16,8,6,7]
将6,7在数组中移除,并添加6+2x7=20, A=[20,16,8]将8.16在数组中移除,并添加8+16x2=40,A=[40,20]所有的值都大于等于9,处理了4次,因此返回4.

#include<stdio.h>
int main()
{
	int k,n;
	int a[100];

	printf("请输入K,n:  ");
	scanf("%d %d",&k,&n);
	int i,j;
	printf("请输入数组a:   ");
	for(i=0;i<n;i++)
		scanf("%d",& a[i]);
		
	int  temp;
	int hand=0;
	int count=0;
	
	for (hand = 0; hand < n ;)
	{
		for (j = hand; j < n-1 ; j++)
			{
				for (i = hand; i < n -1 ; i++)
					if (a[i] > a[i + 1])
					{
						temp = a[i];
						a[i] = a[i + 1];
						a[i + 1] = temp;
					}
			}
		
		if(a[hand]<k)
		{
			a[hand+1]=a[hand+1]+a[hand];
			hand++;
			count++;
		}
		else break;
				
	}
	printf("计算次数为  %d",count);	
	return 0;
}

标签:期望,数字,int,hand,++,给定,数组,移除
来源: https://blog.csdn.net/siper12138/article/details/120384228