贪心算法--最大整数问题

#include 
#include 
#include 
using namespace std;
string str[100]="";
string ChangeIntToString(int num){
	stringstream ss;
	string s;//用来放转换成string的数值 
	ss<>s;//从ss中抽取前面插入的int类型的值,并且赋予string类型 
	return s;//返回string类型的值 
}

string greedyMAX(int num[],int n){
	string strmax="";
	for (int i = 0; i < n; ++i) {
		str[i] = ChangeIntToString(num[i]);//把num数组中的每个值都变成string类型保存到str数组中 
	}
	for (int i = 0; i < n; ++i) {
		for (int j = i + 1; j < n; ++j) {//类似于冒泡算法,依次比较找出所有中string类型最大的 
			if ((str[i]+str[j]).compare(str[j] + str[i]) < 0) {//如果str[i]+str[j] 小于str[j]+str[i]则交换 
				string temp=str[i];
				str[i] = str[j];
				str[j] = temp;
			}
		}
	}
	for (int i = 0; i < n; ++i) {
		strmax += str[i];
	}
	return strmax;
}

int main(){
	int n;
	cout<<"请输入整数的个数:";
	cin>>n;
	int num[n];
	cout<<"请输入各整数:";
	for(int i=0;i>num[i];
	}
	string res=greedyMAX(num,n);
	cout<<"最终结果为:"<

主要是转换成string类型来做,不然单纯用几个排序的贪心算法,可能会出现错误,当然,可以尝试用一下基数排序算法试试。

你可能感兴趣的:(C++)