全部评论
他会打乱字符顺序
这个题我写了一百行。。你这个想简单了
。。。表示一脸懵逼,谁能告诉我一下,怎么把打乱顺序的单词还原吗?
package 小米.test3; import java.util.ArrayList; import java.util.Collections; import java.util.Scanner;
/**
* * 功能 *
* <p> * * Created by zhangyuxin on 2016/9/23. * version
*/
public class Main { public static ArrayList<String> lists = new ArrayList<String>();
public static String moveFirst(String string, String ch) {
int i = string.indexOf(ch);
string = string.substring(0, i) + string.substring(i + 1, string.length());
return string;
}
public static void cleanZERO(String string) {
while (string.indexOf("Z") >= 0) {
string = moveFirst(string, "Z");
string = moveFirst(string, "E");
string = moveFirst(string, "R");
string = moveFirst(string, "O");
lists.add("2");
}
while (string.indexOf("G") >= 0) {
string = moveFirst(string, "E");
string = moveFirst(string, "I");
string = moveFirst(string, "G");
string = moveFirst(string, "H");
string = moveFirst(string, "T");
lists.add("0");
}
while (string.indexOf("H") >= 0) {
string = moveFirst(string, "T");
string = moveFirst(string, "H");
string = moveFirst(string, "R");
string = moveFirst(string, "E");
string = moveFirst(string, "E");
lists.add("5");
}
while (string.indexOf("W") >= 0) {
string = moveFirst(string, "T");
string = moveFirst(string, "W");
string = moveFirst(string, "O");
lists.add("4");
}
while (string.indexOf("R") >= 0) {
string = moveFirst(string, "F");
string = moveFirst(string, "O");
string = moveFirst(string, "U");
string = moveFirst(string, "R");
lists.add("6");
}
while (string.indexOf("F") >= 0) {
string = moveFirst(string, "F");
string = moveFirst(string, "I");
string = moveFirst(string, "V");
string = moveFirst(string, "E");
lists.add("7");
}
while (string.indexOf("O") >= 0) {
string = moveFirst(string, "O");
string = moveFirst(string, "N");
string = moveFirst(string, "E");
lists.add("3");
}
while (string.indexOf("V") >= 0) {
string = moveFirst(string, "S");
string = moveFirst(string, "E");
string = moveFirst(string, "V");
string = moveFirst(string, "E");
string = moveFirst(string, "N");
lists.add("9");
}
while (string.indexOf("S") >= 0) {
string = moveFirst(string, "S");
string = moveFirst(string, "I");
string = moveFirst(string, "X");
lists.add("8");
}
while (string.indexOf("N") >= 0) {
string = moveFirst(string, "N");
string = moveFirst(string, "I");
string = moveFirst(string, "N");
string = moveFirst(string, "E");
lists.add("1");
}
Collections.sort(lists);
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = Integer.parseInt(sc.nextLine());
String[] str_arr = new String[n];
for (int i = 0; i < n; i++) {
str_arr[i] = sc.nextLine();
}
for (int i = 0; i < str_arr.length; i++) {
cleanZERO(str_arr[i]);
for (int j = 0; j < lists.size(); j++) {
System.out.print(lists.get(j));
}
System.out.println();
lists.clear();
}
}
}
#include<iostream>
#include<vector>
#include<stack>
#include<algorithm>
#include<map>
#include<string>
#include<set>
using namespace std;
string t[10] = { "ZERO","FOUR","EIGHT","THREE","TWO","ONE","FIVE","SEVEN","SIX","NINE" };
int tt[10] = { 0,4,8,3,2,1,5,7,6,9 };
bool bidui(vector<int> &d, int i) {
int a[26] = { 0 };
for (int j = 0; j < t[i].length(); j++) {
a[t[i][j] - 'A']++;
}
for (int j = 0; j < 26; j++) {
if (a[j] > d[j]) return false;
}
return true;
}
int main() {
int T;
cin >> T;
while (T--) {
vector<int> d(26,0);
string s;
cin >> s;
for (int i = 0; i < s.length(); i++)
d[s[i] - 'A']++;
vector<int> num;
for (int i = 0; i < 10; i++) {
while (bidui(d, i)) {
for (int j = 0; j < t[i].length(); j++) {
d[t[i][j] - 'A'] --;
}
num.push_back(tt[i]);
}
}
for (int i = 0; i < num.size(); i++) {
if (num[i] < 8) num[i] = num[i] + 2;
else num[i] = num[i] - 8;
}
sort(num.begin(), num.end());
for (int i = 0; i < num.size(); i++) cout << num[i];
cout << endl;
}
return 0;
}
每个单词包含的字母个数不同。最终所有单词包含字母的数量可以统计,就形成了一个线性约束。
解线性方程组,如果可以引入科学计算的库大概就十几行吧。
既然笔试不能引入,那么就自己根据矩阵模拟手算消元解方程,就是答案了。
我是这样写的,实际可以更精简:
def f(str)
str = str.chomp
h = Hash.new(0)
str.each_char do |c|
h[c] = h[c] + 1
end
num = Array.new(10)
num[0] = h['Z']
num[2] = h['W']
num[8] = h['G']
num[3] = h['H'] - num[8]
num[6] = h['X']
num[7] = h['S'] - num[6]
num[4] = h['R'] - num[3] - num[0]
num[5] = h['F'] - num[4]
num[1] = h['O']- num[0] - num[2] - num[4]
num[9] = (h['N'] - num[1] - num[7]) / 2
arr = []
10.times do |i|
num[i].times do
arr.push( (i + 2) % 10)
end
end
arr.sort { |x, y| x <=> y }.join('')
end
package 小米.test3;import java.util.ArrayList;import
java.util.Collections;import java.util.List;import
java.util.Scanner;public class Main { public static
ArrayList<String> lists = new ArrayList<String>(); public
static String moveFirst(String string,String word) { char[] chars
= word.toCharArray(); for(int ii=0;ii<chars.length;ii++) {
int i = string.indexOf(chars[ii]); string =
string.substring(0, i) + string.substring(i + 1, string.length());
} return string; } public static void cleanZERO(String
string) { while (string.indexOf("Z") >= 0) {
string = moveFirst(string, "ZERO");
lists.add("2"); } while
(string.indexOf("G") >= 0) { string =
moveFirst(string, "EIGHT");
lists.add("0"); } while
(string.indexOf("H") >= 0) { string =
moveFirst(string, "THREE");
lists.add("5"); } while
(string.indexOf("W") >= 0) { string =
moveFirst(string, "TWO"); lists.add("4");
} while (string.indexOf("R") >= 0) {
string = moveFirst(string, "FOUR");
lists.add("6"); } while
(string.indexOf("F") >= 0) { string =
moveFirst(string, "FIVE");
lists.add("7"); }while (string.indexOf("O")
>= 0) { string = moveFirst(string, "ONE");
lists.add("3"); } while
(string.indexOf("V") >= 0) { string =
moveFirst(string, "SEVEN");
lists.add("9"); } while
(string.indexOf("S") >= 0) { string =
moveFirst(string, "SIX"); lists.add("8");
} while (string.indexOf("N") >= 0) {
string = moveFirst(string, "NINE");
lists.add("1"); } Collections.sort(lists); }
public static void main(String[] args) { Scanner sc = new
Scanner(System.in); int n = Integer.parseInt(sc.nextLine());
String[] str_arr = new String[n]; for(int i=0;i<n;i++) {
str_arr[i] = sc.nextLine(); } for(int
i=0;i<str_arr.length;i++) { cleanZERO(str_arr[i]);
for(int j=0;j<lists.size();j++) {
System.out.print(lists.get(j)); }
System.out.println(); lists.clear(); } }}
相关推荐
![](https://static.nowcoder.com/fe/file/oss/1716965564844UEBJN.png)
![](https://static.nowcoder.com/fe/file/oss/1716965585666UBBME.png)
顺丰集团
| 校招
| 超多精选岗位
点赞 评论 收藏
分享
2024-12-25 09:09
四川师范大学 运营 点赞 评论 收藏
分享