你看看哪里的问题,本地运行好好的。
l=[] while True: str=raw_input().split() if not str: break l.append(str) dict={'a': 0, 'c': 2, 'b': 1, 'e': 4, 'd': 3, 'g': 6, 'f': 5, 'i': 8, 'h': 7, 'k': 10, 'j': 9, 'm': 12, 'l': 11, 'o': 14, 'n': 13, 'q': 16, 'p': 15, 's': 18, 'r': 17, 'u': 20, 't': 19, 'w': 22, 'v': 21, 'y': 24, 'x': 23, 'z': 25} for i in l: sum=0 flag=True for j in list(i[0]): print j if j in ['a','b','c','d','e','f','g','h','i','j','k', 'l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']: sum=dict[j]+sum*26 else: flag=False break if flag: print sum else: print
前端编程题中:酒店评星级的问题,可以帮我看看哪里有问题吗?提交时提示只过了20%,我怎么都没找到哪里出错了。
#include<iostream> #include <algorithm> using namespace std; typedef struct Hotel { int num; int min; float avage; }h; h hotel[10000]; bool cmpare(const h &a, const h &b){ if(a.min > b.min){ //最低星级比较高的 return true; }else if(a.min == b.min){ //最低星级相等 if(a.avage > b.avage) { //平均星级较高 return true; }else if(a.avage == b.avage){ //平均星级相等 return a.num < b.num; } else{ //平均星级较低 return false; } }else{ //最低星级比较低 return false; } return false; } int main(){ int n; cin>>n; for(int i=0;i<n;i++){ int sum = 0; int min = 5; int tmp; for(int i=0;i<5;i++){ cin>>tmp; sum += tmp; if(min > tmp){ min = tmp; } } h htmp; htmp.num = i; htmp.min = min; htmp.avage = (float)sum / 5; hotel[i] = htmp; } sort(hotel,hotel+n,cmpare); for(int i=0;i<n;i++){ cout<<hotel[i].num<<" "; } return 0; }
#include <stdio.h> int main () { int n,i,j,sum=0,temp=0; int a[100],b[100],c[100]; scanf("%d",&n); for(i=0;i<n;i++) scanf("%d%d%d",&a[i],&b[i],&c[i]); switch(b[0]+c[0]) { case 0:break; case 2:sum=sum+30;break; case 1:sum=sum+10;break; } for(i=1;i<n;i++) { temp=0; switch(b[i]+c[i]) { case 0:break; case 2:sum=sum+30;break; case 1:for(j=0;j<i&&temp==0;j++) { if(a[i]-a[j]==0) {sum=sum+5;temp=1;} else {sum=sum+10;temp=1;} }break; } } printf("%d\n",sum); }
本地完全没问题,为啥提交上去是RE????????????????
蓝受 香菇
前端第一题 不是很懂为什么 输出没有一个对的 本地利用题目的用例带入进去是55呀 求解答谢谢
var temp=read_line(); var n=Number(temp); var record=[]; while(temp=read_line()){ record.push(temp); } if ( record == []) { print(0); return; } var sum = 0; var answered = {}; var correct = {}; for(var i=0;i<n;i++) { if(record[i].length!=3)continue var num1=Number(record[i].split(' ')[0]); var num2=Number(record[i].split(' ')[1]); var num3=Number(record[i].split(' ')[2]); if(num2==1&&num3==0){ if(!answered[num1]) { sum+=10 correct[num1]=1; answered[num1]=1; continue } if(correct[num1])sum+=5; }else if(num2==num3&&num2==1){ sum+=30; } if(num2==1){ if(!correct[num1])correct[num1]=1; } if(!answered[num1])answered[num1]=1; } print(sum)
你好,第一题,构建二叉树没问题,自己输出也没问题,但就是没办法通过,一直怀疑是没打印换行符,可以尝试了十几分钟还是提示不通过,能麻烦看一看么?自信这题没写错...
n = raw_input() mae = [int(i) for i in raw_input().split(' ')] raw_naka = [int(i) for i in raw_input().split(' ')] naka = [[i,1] for i in raw_naka] for node in mae: idx = raw_naka.index(node) c = naka[idx][1] for n in naka[idx-1::-1]: if n[1] == c: n[1] = c+1 else: break for n in naka[idx+1:]: if n[1] == c: n[1] = c+1 else: break now_c = 1 flg = 0 lst = [] while True: for n,c in naka: if c == now_c: flg += 1 lst.append(n) if flg > 0: flg = 0 now_c += 1 else: break for i in lst: print i, print '\n'
本地调试一直都对,到网页怎么都不对……
# include <iostream>
# include <stdio.h>
# include <math.h>
using namespace std;
int main ()
{
int n, m=0,i=0;
char a[10];
char c;
int ans=0;
while(1)
{
do{
c=cin.get();
a[i]=c;
m++;
i++;
}while(c!='\n');
for(i=m-2;i>=0;i--)
{
n=a[i]-97;
ans=ans+n*pow(26,(m-2-i));
}
cout<<ans<<'\n';
i=0;
m=0;
ans=0;
}
return 0;
}
import java.util.Scanner;
class TestAll {
public static void main (String [] args) {
Scanner sc=new Scanner(System.in);
String[] a=new String[4];
for(int i=0;i<4;i++){
a[i]=sc.next();}
for(int v=0;v<4;v++){
int count=0;
for(int i=0;i<a[v].length();i++){
int k=1;
for(int j=0;j<a[v].length()-i-1;j++){
k=26*k;
}
count=(((int)(a[v].charAt(i)))-97)*k+count;
}
System.out.println(count);
}
}
}
为什么还是不对呢???
//大神帮我看一下 //字符串变换那道题哪里错了 //就是hot变dog那道题 //我在myEclipse一点问题没有,到了赛码网一个数据都不通过 import java.util.ArrayList; import java.util.Scanner; public class Main { public static void main(String[] args) { int result=0; Scanner sc = new Scanner(System.in); String s1 = sc.nextLine(); String s2 = sc.nextLine(); String s3 = sc.nextLine(); String[] arr=s3.split(" "); //************ char[] start=s1.toCharArray(); char[] end=s2.toCharArray(); char[][] ss=new char[arr.length][start.length]; for(int m=0;m<arr.length;m++){ ss[m]=arr[m].toCharArray(); } //*********** int start_dif=0; int[] difs=new int[arr.length]; //初始化start_dif for(int i=0;i<start.length;i++){ if(start[i]!=end[i]){ start_dif++; } } //初始化difs for(int m=0;m<arr.length;m++){ int count=0; for(int i=0;i<start.length;i++){ if(ss[m][i]!=end[i]){ count++; } } difs[m]=count; } //开始变换 while(start_dif!=0){ //先找difs[i]=start_dif-1的 ArrayList<Integer> list=new ArrayList<Integer>(); for(int i=0;i<arr.length;i++){ if(difs[i]==start_dif-1){ list.add(i); } } //**************** for(int i=0;i<list.size();i++){ int difs_star=0; for(int m=0;m<start.length;m++){ if(start[m]!=ss[list.get(i)][m]){ difs_star++; } } if(difs_star==1){//只有一处不同,让start=ss[list.get(i)] for(int n=0;n<start.length;n++){ start[n]=ss[list.get(i)][n]; } start_dif--; result++; break; } } } System.out.println(result+1); } }
软件开发实习生第一题,知道前序、后序得出层序遍历。本地测试对的,可是赛码系统上通过0%。
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int n = Integer.parseInt(scan.nextLine()); String first = scan.nextLine(); String order = scan.nextLine(); floor(first,order,n); } public static void floor(String first,String order,int n){ String[] a = first.split(" "); String[] b = order.split(" "); String[] c = new String[n]; solve2(a, b, c, 0, 0, 0, n); for (int i = 0; i < n; i++) { System.out.print(Integer.parseInt(c[i])+" "); } } //根据先序和中序遍历数组获取后序遍历数组 public static void solve2(String[] first,String[] inner,String[] result,int preL,int inL,int posL,int n){ if (n == 0) { return; } if (n == 1) { result[posL] = first[preL];return; } String root = first[preL]; result[posL] = root; int i = 0; for (; i < n; i++) { if (Integer.parseInt(inner[inL+i]) == Integer.parseInt(root)) { break; } } int l = i;int r = n-i-1; solve2(first,inner,result,preL+1,inL,2*preL+1,l);//左子树 solve2(first,inner,result,preL+1+l,inL+l+1,2*preL+2,r);//右子树 } }
5
1 2 4 5 3
4 2 5 1 3
结果输出:1 2 3 4 5
不知哪个地方不行啊,本地调试对的啊
#include<iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
int main()
{
char istr[20];
int ostr[20];
int i, j, len;
int temp = 0;
int op = 1;
gets(istr);
len = strlen(istr);
if (len == 1 && istr[0] == 'a')
{
printf("0");
return 0;
}
for (i = len - 1; i >= 0; i--)
{
temp += ((istr[i] - 'a') * op);
op *= 26;
}
i = 0;
cout<<temp;
return 0;
}
//求指教第二题,本地运行是正确啊! import java.util.HashMap; import java.util.Map; import java.util.Scanner; public class Main { static Scanner scanner = new Scanner(System.in); public static void main(String[] args) { String str; while (true) { str=scanner.next(); if(str==null)break; System.out.println(name(str)); } } public static int name(String str) { Map<Character, Integer> map = new HashMap<Character, Integer>(); char tmp='a'; for (int i = 0; i < 26; i++) { map.put((char) (tmp+i), i); } int sum=0; String string=str; int len=string.length()-1; char c[]=string.toCharArray(); for (int i = 0; i < c.length; i++) { if (c[i]>='a'&&c[i]<='z') { int p=map.get(c[i]); sum+=p*Math.pow(26, len--); }else { System.exit(0); } } return sum; } }
var n = read_line(); var sum = 0; var question = []; for (var i = 0; i < n; i++) { var input = read_line(); var inputs = input.split(" "); if (inputs[1] === '0') { sum += 0; } else if (inputs[1] === '1' && inputs[2] === '1') { sum += 30; } else { var tag = 0; for (var j = 0; j < question.length; j++) { if (parseInt(question[j]) === parseInt(inputs[0])) { sum += 5; tag = 1; } } if (tag === 0) { sum += 10; question.push(inputs[0]); } } } print(sum);
酒店问题 请问下这个逻辑有问题吗
单独保存一个 最低星 平均 位置下标的数组
重写SORT 对数组排序
输出位置下标
但是只有20 求解答
var temp=read_line();
var n=Number(temp);
var arr=[];
while(temp=read_line()){
arr.push(temp);
}
function sortgotel(arr){
var res=[]
var resinner=[]
for(var i=0;i<arr.length;i++){
var arrtemp=arr[i].split(" ")
var min=10
var count=0
for(var j=0;j<arrtemp.length;j++){
count+=Number(arrtemp[j])
if(arrtemp[j]<min)min=Number(arrtemp[j])
}
var avg=Number((count/arrtemp.length).toFixed(2))
resinner=[min,avg,i]
res.push(resinner)
}
res.sort(function(a,b){
if(a[0]>b[0]){
return -1
}else if(a[0]<b[0]){
return 1
}else{
if(a[1]>b[1])return -1
else if(a[1]<b[1])return 1
else {
if(a[2]<b[2])return -1
else return 1
}
}
})
var res2=[]
for(var z=0;z<res.length;z++){
res2.push(res[z][2])
}
return res2
}
var rr=sortgotel(arr)
print(rr.join(" "))
这是哪儿有错误吗
var n=-1; var line; var curLine=0; var questionNum=[]; var isRight=[]; var ans=0; while(line = read_line()){ if(n<0){ n=line; }else{ line = line.split(' '); } line=line.map(function(item){ return parseInt(item); }); if(line[1]==1&&line[2]==1){ ans+=30; }else{ if(line[1]==1&&line[2]==0){ if(questionNum.indexOf(line[0])==-1) { ans+=10; }else{ var num=questionNum.indexOf(line[0]); if(isRight[num]==1){ ans+=5; }else{ ans+=10; } } } } questionNum[curLine]=line[0]; isRight[curLine]=line[1]; curLine +=1; if( curLine-1 ==n){ print(ans); } }
第一题分层遍历,才对了20%,实在是想不通,能公布下测试用例麽.......
#include <bits/stdc++.h> using namespace std; class node{ public: int v; node *lchild; node *rchild; node(int value = 0){ v = value; lchild = NULL; rchild = NULL; } }; node* build(int a[], int as, int b[], int bs, int len){ int temp = a[as]; int i; for(i = bs; i < len; i++) if(b[i] == temp) break; node *head = new node(temp); if(i - bs >= 1) head->lchild = build(a, as + 1, b, bs, i - bs); if(len - (i - bs + 1) >= 1) head->rchild = build(a, as + i - bs + 1, b, i + 1, len - (i - bs + 1)); return head; } void printTree(node *head){ if(head == NULL) return; queue<node*> q; node *cur = head; q.push(cur); int flag = 1; while(!q.empty()){ node *p = q.front(); if(flag == 1){ cout<<p->v; flag = 0; } else cout<<" "<<p->v; q.pop(); if(p->lchild != NULL) q.push(p->lchild); if(p->rchild != NULL) q.push(p->rchild); } } int main() { int n; cin>>n; int *a = new int[n]; int *b = new int[n]; for(int i = 0; i < n; i++) cin>>a[i]; for(int i = 0; i < n; i++) cin>>b[i]; node *head; head = build(a, 0, b, 0, n); printTree(head); }
static int cc=0; static int[] result; static int[] sign; public static void main(String[] args){ Scanner in = new Scanner(System.in); int nodeNum = in.nextInt(); int[] qian = new int[nodeNum]; int[] zhong = new int[nodeNum]; for(int i =0;i<nodeNum;i++){ qian[i] = in.nextInt(); } for(int i =0;i<nodeNum;i++){ zhong[i] = in.nextInt(); } result = new int[nodeNum]; sign = new int[nodeNum]; getNode(zhong, qian,0); int count =0; for(int i=0;i<nodeNum;i++){ if(count==nodeNum){ break; } for(int j=0;j<result.length;j++){ if(sign[j]==i){ count++; if(count==nodeNum){ System.out.print(result[j]); }else{ System.out.print(result[j]+" "); } } } } } public static int getNode(int[] input,int[] qian,int layer){ if(input.length==1){ result[cc] = input[0]; sign[cc] = layer; cc++; return 0; } int count=0; for(int i=0;i<input.length;i++){ if(qian[cc]==input[i]){ break; } count++; } result[cc] = input[count]; sign[cc] = layer; cc++; int[] temp1 = new int[count]; int[] temp2 = new int[input.length-1-count]; for(int i =0;i<count;i++){ temp1[i] = input[i]; } for(int i=0;i<temp2.length;i++){ temp2[i] = input[count+i+1]; } getNode(temp1, qian,layer+1); getNode(temp2, qian,layer+1); return 0; }
第一题本地测试通过 赛码网上一直显示Runtime error。。求解
前端第一题,能帮我看看哪错了吗,说我所有测试数据结果均不正确,但是本地测试了好几组数据结果都对。
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int score = 0;
int n = scan.nextInt();
Map map = new HashMap();
int a = 0,b = 0,c = 0;
for (int i = 0; i < n; i++) {
a = scan.nextInt();
b = scan.nextInt();
c = scan.nextInt();
if(c == 1){
score += 30;
}else if(b == 1){
if(map.containsKey(a)&&map.get(a).equals(b)){
score += 5;
}else{
score += 10;
}
}
map.put(a, b);
}
System.out.println(score);
}
}
import java.util.ArrayList; import java.util.Scanner; /** * Created by ximi on 2017/4/1. */ public class Test2 { public static void reverse(ArrayList<String> list){ for(int i = 0;i < list.size();i++){ String s = list.get(i); //判断是不是为空 if(s.length() == 0 || s == null) System.out.println(-1); //转换成小写 s = s.trim().toLowerCase(); //这里一定要定义成long,int会一直通不过,可能数据比较大 long result = 0; for(int j = 0; j < s.length();j++){ //逻辑转换 result = result * 26 + s.charAt(j) - 'a'; } System.out.println(result); } } public static void main(String[] args) { Scanner sc = new Scanner(System.in); ArrayList<String> list = new ArrayList<String>(); while(sc.hasNextLine()) { list.add(sc.nextLine()); } reverse(list); } }
前端第二题,谁做出来了吗?本次测试结果正确啊,说正确率0.0
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
int[][] a = new int[n][n];
for (int i = 0; i < n; i++) {
for (int j = 0; j < 5; j++) {
a[i][j] = scan.nextInt();
}
}
//System.out.println(sortHotel(n,a));
int[] min = new int[n];
double[] ave = new double[n];
int[] sort = new int[n];
for (int i = 0; i < n; i++) {
sort[i] = i;
}
for (int i = 0; i < n; i++) {
double sum = 0.00;
min[i] = a[i][0];
for (int j = 0; j < 5; j++) {
if(min[i]>a[i][j])
min[i] = a[i][j];
sum += a[i][j];
}
ave[i] = 0.00;
ave[i] = sum/5;
}
int temp;
for (int i = 0; i < n; i++) {
for (int j = i+1; j < n; j++) {
if(min[i]<min[j]){
temp=sort[i];
sort[i]=sort[j];
sort[j]=temp;
}else if(min[i] == min[j]){
if(ave[i]<ave[j]){
temp=sort[i];
sort[i]=sort[j];
sort[j]=temp;
}
}
}
}
for (int i = 0; i < n; i++) {
System.out.print(sort[i]+" ");
}
}
}
第一题,前序中序 构建树 求层序的题。 本地测试好好的,通过率只有20%。 哪位大神能给看看吗? import sys n = int(sys.stdin.readline().strip('\n')) pre = map(int, sys.stdin.readline().strip('\n').split(' ')) mid = map(int, sys.stdin.readline().strip('\n').split(' ')) Tree = [] def make_tree(pre, mid, tree, n): if n == 1: root = pre[0] tree.append(root) return if n == 0: return root = pre[0] tree.append(root) tree.append([]) tree.append([]) for i,v in enumerate(mid): if root == v: make_tree(pre[1:i+1], mid[0:i], tree[1], i) make_tree(pre[i+1:], mid[i+1:], tree[2], n-1-i) make_tree(pre, mid, Tree, n) queue = [] queue.append(Tree) while (len(queue)): tree = queue.pop(0) if len(tree) == 0: pass elif len(tree) == 1: print tree[0], elif len(tree) == 3: print tree[0], queue.append(tree[1]) queue.append(tree[2]) print (Tree)
单词变换,当时没做出来,时候又做了半小时算是调试出来了,调试了一下,全部通过
import java.util.*; public class Main { private static int result = Integer.MAX_VALUE; public static void main(String[] args) { Scanner in = new Scanner(System.in); while (in.hasNext()) { String start = in.nextLine(); String end = in.nextLine(); List<String> listData = new ArrayList<>(); String s = in.nextLine(); listData = Arrays.asList(s.split(" ")); System.out.println(initData(start, end, listData)); } } // 初始化数据 private static int initData(String start, String end, List<String> listData) { // 构建start 的 邻接矩阵 Set<String> startLin = getStringSet(start); // 构建所有字典的邻接矩阵。 Map<String, Set<String>> dictLin = new HashMap<>(listData.size()); for (int i = 0; i < listData.size(); i++) { dictLin.put(listData.get(i), getStringSet(listData.get(i))); } // 遍历查找 getResult(startLin, end, dictLin, 1); return result; } // 循环查找 private static void getResult(Set<String> start, String end, Map<String, Set<String>> dictLin, int level) { for (String s : start) { Iterator<Map.Entry<String, Set<String>>> it = dictLin.entrySet().iterator(); while (it.hasNext()) { Map.Entry entry = (Map.Entry) it.next(); if (((Set<String>) entry.getValue()).contains(s)) { if (entry.getKey().equals(end)) { result = Math.min(result, level + 1); return; } else { it.remove(); getResult((Set<String>) entry.getValue(), end, copy(dictLin), level + 1); } } } } } //复制map private static Map<String, Set<String>> copy(Map<String, Set<String>> pre) { Map<String, Set<String>> res = new HashMap<>(); for (String s : pre.keySet()) { res.put(s, pre.get(s)); } return res; } // 构造邻接矩阵 private static Set<String> getStringSet(String data) { HashSet<String> result = new HashSet<>(); for (int i = 0; i < data.length(); i++) { String t = ""; for (int j = i + 1; j < data.length() + i; j++) { t = t + data.charAt(j % data.length()); } result.add(t); } return result; } }
import java.util.Scanner; public class Main { static class person{ public int pronum; public int retrue; public int jietrue; public int getpronum(){ return pronum; } public int getreture(){ return retrue; } public int getjietrue(){ return jietrue; } public void setpronum(int _pronum){ pronum=_pronum; } public void setretrue(int _retrue){ retrue=_retrue;; } public void setjietrue(int _jietrue){ jietrue=_jietrue; } } public static void main(String []args){ Scanner sc=new Scanner(System.in); int money=0; int n=sc.nextInt(); person p[]=new person[n]; person p1[]=new person[n]; for(int i=0;i<n;i++){ p[i]=new person(); p1[i]=new person(); //for(int j=0;j<3;j++){ int pnum=sc.nextInt(); int re=sc.nextInt(); int jie=sc.nextInt(); p[i].setpronum(pnum); p[i].setretrue(re); p[i].setjietrue(jie); p1[i].setpronum(pnum); p1[i].setretrue(re); p1[i].setjietrue(jie); } for(int i=0;i<n;i++){ if(i==0){ if(p[i].getreture()==1){ if(p[i].getjietrue()==1){ money+=30; } else money+=10; } } else{ if(p[i].getreture()==1){ if(p[i].getjietrue()==1){ money+=30; } else{ ////// boolean flag=false; for(int k=0;k<=i;k++){ if(p1[k].getpronum()==p[i].getpronum()&&p1[k].getjietrue()==1){ flag=true; } } if(flag==false){ money+=10; } else money+=5; } } } } System.out.println(money); sc.close(); } }
同样是前端第一题,本地数据都正确了,但是编辑器一直说用例未通过