3.cpp

来自「多元哈夫曼算法」· C++ 代码 · 共 101 行

CPP
101
字号
#include <iostream>
#include<fstream>
using namespace std;
const int size=20;

int   getmin(int *a,int n,int k)
	{
	int sum=0,min1=0;
	while(n!=0)
	{
	for(int m=0;m<k;m++)
	{
		int min=a[0];
		int flag=0;
		for(int i=0;i<n;i++)
		{ 
		
			if(a[i]<min)
			{
				min=a[i];
				flag=i;
			}
		}
		//cout<<min<<endl;
		sum=sum+min;
		for(int j=flag;j<n;j++)
		{
			a[j]=a[j+1];
		}
		n=n-1;
	}
	min1=sum+min1;
	if(n!=0) n=n+1;	
		a[n-1]=sum;
		sum=0;
	}
	
return min1;

}

int  getmax(int *a,int n,int k)
	{
	if(k>2)k=2;
	int sum=0,max1=0;
	while(n!=0)
	{
	for(int m=0;m<k;m++)
	{
		int max=a[0];
		int flag=0;
		for(int i=0;i<n;i++)
		{ 
		
			if(a[i]>max)
			{
				max=a[i];
				flag=i;
			}
		}
		//cout<<min<<endl;
		sum=sum+max;
		for(int j=flag;j<n;j++)
		{
			a[j]=a[j+1];
		}
		n=n-1;
	}
	max1=sum+max1;
	if(n!=0) n=n+1;	
		a[n-1]=sum;
		sum=0;
	}
	
return max1;

}
void main()
{
	int n,k,max,min;
	ifstream cin("input.txt");
	ofstream cout("output.txt");
    cin>>n>>k;
	if(k<2) cout<<"输入错误"<<endl;
	int a[size],b[size];
	for(int i=0;i<n;i++)
	{
		cin>>a[i];
		b[i]=a[i];
	}
	
	max=getmax(a,n,k);
	min=getmin(b,n,k);
	cout<<max<<endl;
	cout<<min;
}




⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?