小米编程-号码分身

一直都是20%,不知道哪里出了问题;
#搜狐#
全部评论
他会打乱字符顺序
点赞 回复 分享
发布于 2016-09-23 21:23
这个题我写了一百行。。你这个想简单了
点赞 回复 分享
发布于 2016-09-23 22:29
。。。表示一脸懵逼,谁能告诉我一下,怎么把打乱顺序的单词还原吗?
点赞 回复 分享
发布于 2016-09-23 23:06
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();     }   } }
点赞 回复 分享
发布于 2016-09-23 23:29
#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; }
点赞 回复 分享
发布于 2016-09-23 23:33
每个单词包含的字母个数不同。最终所有单词包含字母的数量可以统计,就形成了一个线性约束。 解线性方程组,如果可以引入科学计算的库大概就十几行吧。 既然笔试不能引入,那么就自己根据矩阵模拟手算消元解方程,就是答案了。 我是这样写的,实际可以更精简: 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
点赞 回复 分享
发布于 2016-09-23 23:35
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(); } }}
点赞 回复 分享
发布于 2016-09-23 23:40

相关推荐

2024-12-25 09:09
四川师范大学 运营
想和你交朋友的潜伏者要冲国企:先去沃尔玛亲身感受标准化流程体系,一两年后再跳槽国内任何零售行业,可以有更大选择权吧?
点赞 评论 收藏
分享
头像
2024-12-19 18:11
英特尔_Software_engineer
下水道鼠鼠鼠鼠:男的能去当技师吗 好进吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务