招行信用卡中心笔试(编程只过1道)

    原以为银行类的笔试不会太难,结果是我太年轻
    选择题就不说了,考察的很多,python,C++,JAVA都考,前端也考(醉了)
    编程   100     0      0     (伤心死了,第二题来不及从本地IDE转到牛客)
    编程三道:1.小招瞄的机器人,花了半小时写出来了
    
package BiShi;

import java.util.Scanner;

/**
 * 小招瞄的机器人
 * @author Administrator
 *
 */
public class ZHXYK_1 {

	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		String s = in.nextLine();
		int[] jiqi = new int[s.length()];
		int rl = 0;//用于记录RRRR这样的串的左端
		int rr = 0;/记录RRRR这样的右端
		
		int firstleft = -1;//记录LLLL串的第一个L下标
		for(int i=0;i<jiqi.length;i++) {
			if(s.charAt(i) == 'L') {//遇到L
				if(s.charAt(i-1) == 'R') {//如果左侧为R,那么该L为LLL串的左端
					firstleft = i;
					rr = i-1;
					for(int j=rl;j<=firstleft;j++) {//将之前的RRRR串处理一下
						if((i-j) % 2 == 0) {
							jiqi[i] ++;
						}else {
							jiqi[i-1] ++;
						}
					}
					
				} else {//LLL这样的
					if((i-firstleft) % 2 == 0) {
						jiqi[firstleft]++;
					}else {
						jiqi[firstleft-1]++;
					}
				}
				
			}else {//'R'
				if(i > 0 && s.charAt(i-1) == 'L') {
					rl = i;
				}
			}
		}
		for(int i:jiqi) {
			System.out.print(i+" ");
		}
	}
}

2.子树权值和最大(这题我做出来了,时间紧张,刚在本地通过测试用例,想copy到牛客里时候发现已经自动交卷了,我太难了
自己写的代码如下(大家看不懂正常,我自己也很凌乱😅
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Scanner;

/**
 * 子树权值和最大
 * @author Administrator
 *
 */
public class ZHXYK_2 {

	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int n = in.nextInt();
		in.nextLine();
		int[] res = new int[n+1];
		HashMap<Integer,ArrayList<Integer>> map = new HashMap<>(); 
		for(int i=1;i<=n-1;i++) {
			String s = in.nextLine();
			String[] bian = s.split(" ");
			int father = Integer.valueOf(bian[0]);
			int son = Integer.valueOf(bian[1]);
			int value = Integer.valueOf(bian[2]);
			if(map.containsKey(father)) {
				ArrayList<Integer> list = map.get(father);
				list.add(son);
				list.add(value);
				map.put(father, list);
			}else {
				ArrayList<Integer> list = new ArrayList<>();
				list.add(son);
				list.add(value);
				map.put(father, list);
			}
		}
		for(int i=n;i>=1;i--) {
			if(map.containsKey(i)) {
				ArrayList<Integer> list = map.get(i);
				if(list.size() == 2) {
					res[i] = Math.max(0, list.get(1)+res[list.get(0)]);
				}else {
					int max = Math.max(list.get(1)+res[list.get(0)], list.get(3)+res[list.get(2)]);
					res[i] = Math.max(0, max);
				}
			}
		}
		for(int i=1;i<=n;i++) {
			System.out.print(res[i] + " ");
		}
	}
}
3.字符串取模(想了5分钟没想出来就跑去做第二题了,谁过了的可以留言告诉我)




我这样的过不了笔试吧?到现在还没有过面试经历
#笔试题目##秋招##招商银行信用卡中心##Java#
全部评论
第三题动态规划:dp[i][j]表示前i个字符形成的整数对13的余数为j。如果一个数为n,对13的余数为j,若n后面又加了以为数k,那么新的数为n*10+k,这个新数对13的余数为(n*10+k)%13=(j*10+k)%13。所以代码为: #include <iostream> #include<vector> #include<string> #include<algorithm> #include<numeric> #include<unordered_map> #include<map> #include<queue> #include<unordered_set> #include<set> #include<iomanip> #include<sstream> #include<stack> using namespace std; int main() { string s; cin>>s; int len=s.size(); vector<vector<int>>dp(len+1,vector<int>(13,0)); dp[0][0]=1; int M=1e9+7; for(int i=0;i<len;++i){ for(int j=0;j<13;++j){ if(dp[i][j]!=0){ if(s[i]=='?'){ for(int k=0;k<10;++k){ dp[i+1][(j*10+k)%13]+=dp[i][j]; dp[i+1][(j*10+k)%13]%=M; } } else{ dp[i+1][(j*10+s[i]-'0')%13]+=dp[i][j]; dp[i+1][(j*10+s[i]-'0')%13]%=M; } } } } cout<<dp[len][5]; }
点赞 回复
分享
发布于 2019-09-16 08:49
笔试每天三两场,面试下落不明
点赞 回复
分享
发布于 2019-09-15 22:53
百信银行
校招火热招聘中
官网直投
000不想做了
点赞 回复
分享
发布于 2019-09-15 22:53
我的思路是先求字符串长度,确定数据范围,然后求范围内符合对13求模余5条件的点,再通过求模判断是否满足输入条件。比如??5,范围是1-1000,求出所有13求模余5的点,再判断尾数是否为5。应该还可以优化,但是时间太紧张了。
点赞 回复
分享
发布于 2019-09-15 23:03
第一道什么规律
点赞 回复
分享
发布于 2019-09-15 23:06
求问第二道的思路啊!我用的C。感谢
点赞 回复
分享
发布于 2019-09-16 18:08
请问楼主现在接到面试邀请了吗??
点赞 回复
分享
发布于 2019-09-23 21:18

相关推荐

点赞 28 评论
分享
牛客网
牛客企业服务