11 条回复
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
public class Main {
/*请完成下面这个函数,实现题目要求的功能
当然,你也可以不按照下面这个模板来作答,完全按照自己的想法来 ^-^
******************************开始写代码******************************/
static boolean fun(String table, int n) {
boolean result = false;
char seats[] = table.toCharArray();
for (int i = 0; i < seats.length; i++) {
int current = seats[i];
if (i == 0 ) {
if (current == '0' && seats[i + 1] == '0'){
//第一个座位
seats[i] = '1';//已坐人,状态改变
n--;//可以坐一个人
i++;//下一个座位不做判定
}
} else if (i == seats.length - 1 ) {//最后一个座位可以坐人
//最后一个座位
if ( current == '0' && seats[i - 1] == '0'){
seats[i] = '1';//已坐人,状态改变
n--;//可以坐一个人
}
} else if (seats[i - 1] == '0' && current == '0' && seats[i + 1] == '0') {
seats[i] = '1';//已坐人,状态改变
n--;//可以坐一个人
i++;//下一个座位不做判定
}
if (isEnd(n)) {
result = true;//可以坐下新来的人
break;
}
}
return result;
}
static boolean isEnd(int n){
return n == 0;
}
/******************************结束写代码******************************/
public static void main(String[] args){
Scanner in = new Scanner(System.in);
boolean res;
String _table;
try {
_table = in.nextLine();
} catch (Exception e) {
_table = null;
}
int _n;
_n = Integer.parseInt(in.nextLine().trim());
res = fun(_table, _n);
//输出是复制来的,输出bool型调试不通过
System.out.println(String.valueOf(res ? 1 : 0));}
}
var str = read_line(), n = read_line() - 0 var startIndex = str.indexOf('1'), endIndex = str.lastIndexOf('1') var startCount = ~~(startIndex / 2), endCount = ~~((str.length - 1 - endIndex) / 2) var centerCount = 0, temp = 0 for (var i = startIndex + 1; i < endIndex; i++) { if (str[i] == 0) { temp++ } if (temp % 2 == 1 && temp >= 3) { centerCount++ } if (str[i] == 1) temp = 0 } if (centerCount + startCount + endCount >= n) print('true') else print('false')
我感觉我做的对啊 但是A不出来 难道是输出1或0?
package work1; import java.util.Scanner; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner in = new Scanner(System.in); boolean res; String _table; try { _table = in.nextLine(); } catch (Exception e) { _table = null; } int _n; _n = Integer.parseInt(in.nextLine().trim()); res = fun(_table, _n); System.out.println(res); } private static Boolean fun (String a,int b) { Boolean flag=false; int count=0; if(a.length()<3) return flag; for(int i=0;i<a.length()-2;i++) { int temp=0; if(a.substring(i, i+1).equals("1")) { continue; } while(a.substring(i, i+1).equals("0")) { i++; temp++; } if(temp>=3) { if(temp%2==0) { count+=temp/2-1; } else count+=temp/2; } } return (count>=b); } }
var readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); var inputArr = []; rl.on('line', function(line){ inputArr.push(line); if (inputArr.length === 2){ var table = inputArr[0], n = inputArr[1]; var result = fun(table,n); if(result){console.log(1);} else {console.log(0);} inputArr = []; } }); function fun(table,n) { var pattern = /(000)|(^00)|(00$)/g; var count = 0; if(table === 0 && n ===1){return true;} if(/1000001/g.exec(table)!=null)count+=1; pattern.lastIndex = 0; while(pattern.exec(table) != null){ count++; if(count >= n){return true;} } return false; } 用的正则表达式,不知道什么情况没匹配到,测试通过率88%
function fun(table, n) { let sum = 0; let i = 0; if(table.substr(i, 2) === '00') { sum++; i += 1; } for(; i < table.length-2; ) { if(table.substr(i, 3) === '000') { table[i+1] = 1; i += 2; sum++; } else { i += 1; } if(sum >= n) return true; } if(table.substr(i, 2) === '00') sum++; if(sum>=n) return true; return false; }
我觉得我做的挺简单的,就三种情况能插人,00 开头或00 结尾,中间就是 000
function fun(table, n) { let arr = table.split(""); for(let i = 0; i < arr.length; i++) { if(arr[i] == "1") { // 该座位有人,隔壁不能坐人 i++; } else if(i + 1 < arr.length && arr[i + 1] == "0") { // 下一个座位也没人,入座 // arr[i] = "1"; n--; i++; } } return n == 0; } var res; var _table = read_line(); var _n = parseInt(read_line()); res = fun(_table, _n); res = res ? 1 : 0; print(res);
添加回复