大疆编程题(一)
发布于 2017-08-31 21:23 3829 次浏览 0 赞 来自 试题交流  

配上题目和我写的代码,但是不能全部AC,暂时想不出哪些用例不能通过,求助于万能的网友们啊!!!

我的代码有问题么???

数字牌替换小游戏

时间限制:C / C++语言 1000MS;其他语言 3000MS

内存限制:C / C++语言 65536KB;其他语言 589824KB

题目描述:

Tom最近很闲,所以发明了一个小游戏。给出一个数字m(m < 10521),有三个数字牌,可以用一张牌替换随意一种数字,一张扑克牌只能用一次,现在要求求出替换后的最大值(可以选择不用数字牌)。

输入

有n组数据,先输入n。随后每组数据输入m(m < 10521)和三个数字牌

输出

替换后的最大数字


样例输入

2

9001

0

1

2

9301

0

1

2

样例输出

9221

9321

#include <iostream>
#include <vector>
#include <algorithm>
#include <string>

using namespace std;

int main() {
	int n;
	cin >> n;
	vector<vector<int> > pend(n, vector<int>(3, 0));
	vector<string> nums(n, string());
	for (int i = 0; i < n; i++) {
		cin >> nums[i];
		for (int j = 0; j < 3; j++) {
			cin >> pend[i][j];
		}
		sort(pend[i].begin(), pend[i].end());

		int k = 2;
		for (int j = 0; j < nums[i].length() && k >= 0; j++) {
			if (nums[i][j] < pend[i][k] + '0') {
				nums[i][j] = pend[i][k] + '0';
				k--;
			}
		}
	}

	for (int i = 0; i < n; i++) {
		cout << nums[i] << endl;
	}
	return 0;
}
2 条回复

题目理解错了吧

2017-08-31 22:04

替换的是一种数字,而不是一个数字,仔细看第一个例子,2替换9001中的0,因此变成了9221.

2017-09-01 15:01
添加回复
回到顶部