全部评论
2048C++ 做的,先处理n*n的 过75% 然后解析输入处理n*m 的,一直解析错误,,,,,,交卷了发现问题了,,,,,我........i和j这问题....唉 for(int j=0;i<one_in.size();++j){
我完整的写过2048的游戏 外加手势可以滑动前端 😀
求个第一题的代码。。。
C++做处理字符串的题真难受,那个2048居然不是直接读整数。。。 string solution(vector < string > input) {
vector<vector<int>> v;
int n = input.size();
v.resize(n);
for (int i = 0; i < n; ++i) {
string str = input[i];
while (!str.empty()) {
size_t p = str.find(" ");
if (p == string::npos) {
v[i].push_back(stoi(str));
break;
}
string temp = str.substr(0, p);
v[i].push_back(stoi(temp));
str.erase(0, p + 1);
}
}
int m = v[0].size();
for (int i = 0; i < n; ++i) {
int cur = 0;
int k = 0;
for (int j = 0; j < m; ++j) {
if (v[i][j] != 0) {
if (v[i][j] == cur) {
v[i][k] = 2 * cur;
cur = 0;
k += 1;
}
else {
if (cur != 0) {
v[i][k] = cur;
cur = v[i][j];
k += 1;
}
else {
cur = v[i][j];
}
}
}
}
if (cur != 0) {
v[i][k] = cur;
cur = 0;
k += 1;
}
for (; k < m; ++k) v[i][k] = 0;
}
string s = "";
for (int i = 0; i < n; ++i) {
s += to_string(v[i][0]);
for (int j = 1; j < m; ++j) {
s += " ";
s += to_string(v[i][j]);
}
s += "\r\n";
}
return s;
}
25 50 难受。。。
菜到发慌
数组移动其是就是求数组的逆序的个数,逆序个数等于移动次数,就这样AC了
function solution(input) {
for(let m=0;m<input.length;m++){
input[m]=input[m].split(" ");
input[m]=input[m].map((item)=>{return item=item-0})
console.log(input[m]);
}
for(let i=0;i<input.length;i++){
let arr=input[i];
for(let j=1;j<arr.length;j++){
while(arr[0]==0){
arr.shift();
arr.push(0)
}
if(arr[j-1]==0){
arr.splice(j-1,1);
arr.push(0)
}
}
for(let k=1;k<arr.length;k++){
if(arr[k-1]==arr[k]){
arr.splice(k,1);
arr[k-1]=2*arr[k-1]
arr.push(0)
}
}
}
return input
} JS2048思路
2048的java代码 static String solution(String[] input) { String ans = ""; int n = input.length; for(int i = 0;i < n;i++){ String[] s = input[i].split(" "); String[] res = new String[s.length]; int len = 0; for(int j = 0;j < s.length;j++){ if(s[j].equals("0")){ continue; }else if(j < s.length - 1){ if(!s[j].equals(s[j+1])){ res[len] = s[j]; len++; }else { int tmp = Integer.parseInt(s[j]) * 2; res[len] = "" + tmp; len++; j++; } }else { res[len] = s[j]; len++; } } for(int k = len;k < res.length;k++){ res[k] = "0"; } for(int p = 0;p < res.length;p++){ ans = ans + res[p]; if(p < res.length-1) ans = ans + " "; else ans = ans + "\n"; } } return ans; }
def solution(input):
list_input = [i.strip().split(" ") for i in input]
for row in range(len(list_input)):
ori_row = [int(i) for i in list_input[row] if int(i)]
new_row = []
i = 0
while i < len(ori_row):
if i < len(ori_row)-1 and ori_row[i] == ori_row[i+1]:
new_row.append(ori_row[i] * 2)
i += 2
else:
new_row.append(ori_row[i])
i += 1
for i in range(len(list_input[row])):
if i < len(new_row):
list_input[row][i] = new_row[i]
else:
list_input[row][i] = 0
string = ""
for row in list_input:
for num in row:
string += str(num) + " "
string += "\n"
return string 2048的,数组那个没a
2048 1,数组0.67
一直75,不知道有什么case过不去,靠
2048 100%,数组 67%
2048a了,数组直接print 2吃烂分
第一题咋做呀
2048a了,数组那个搞了半天67%,也没有思路了,直接交卷了
看不懂题目,没玩过
2048a了,就每行用另外一个数组存,连着两个一样的相加i+=2,不一样就i++
我也是2048和数组移动
没有
相关推荐
点赞 评论 收藏
分享
查看6道真题和解析