华为软件2020-4-30上机考试

1、输入一字符串,求其最多能排列组合多少种不同的字符串?

string str;

int help(int val);
int main(){
	char ch;
	while((ch=cin.get())!='\n')
		str.push_back(ch);
	if(str.size()==0){
        cout<<0< map1;
	int count=0;
	for(int i=0;isecond==1){
			continue;
		}
		int val=help(iter->second);
		res/=val;
	}
	cout<

2、给定一个字符串,和一个数字k,问从字符串删除k个字符,使得删除后的字符串字典序最小,输出该字符串。

string str;
int k;
int main(){
	char ch;
	while((ch=cin.get())!='\n')
		str.push_back(ch);
	cin>>k;
	int index=0;
	int count=0;
	while(k){
		int start=count;
		char min=str[start];
		for(int i=count+1;i<=(k+start);i++){
			if(str[i]

3、给定城市1-N,给定M条路,每条路有四个值,起始城市、到达城市、路长、过路费,求在给定费用下从1到达N的最短路径长度。

输入:

money

城市数量

道路数量

每条道路的属性

输出:最短路径长度,没有输出-1

int max_money;
int city_count;
int road_count;
int min_dis=1000000;

int main(){
	int res=-1;
	cin>>max_money;
	cin>>city_count;
	cin>>road_count;
	std::vector > vec;
	for(int i=0;i v;
		int val;
		for(int i=0;i<4;i++){
			cin>>val;
			v.push_back(val);
		}
		vec.push_back(v);
	}
	help(vec,1,max_money,0);
	if(min_dis==1000000)
		cout<<-1<> &vec,int city,int money,int dis){
    if(money<0)
		return;    

	if(city==city_count){
		min_dis=min_dis

 

你可能感兴趣的:(华为软件2020-4-30上机考试)