招行卡中心笔试 4.8

第一次编程全AC(虽然就两道)
第一次提前交卷(虽然就提前了五分钟)

第一题
#include<iostream>
#include<map>
using namespace std;
int main(){
    int T;
    cin>>T;
    map<char,char> table;
    table['1']='1';
    table['2']='5';
    table['3']='8';
    table['4']='7';
    table['6']='9';
    table['5']='2';
    table['8']='3';
    table['7']='4';
    table['9']='6';
    cin.ignore();
    while(T--){
        string s;
        getline(cin,s);
        bool flag=true;
        int left=0,right=s.size()-1;
        while(left<=right){
            if(table[s[left]]!=s[right]){
                flag=false;
                break;
            }
        }
        if(flag==true){
            cout<<"YES"<<endl;
        }else{
            cout<<"NO"<<endl;
        }
        left++;
        right--;
    }
    
    return 0;
}
第二题,动态规划,一个大问题可分为3个小问题
#include<iostream>
using namespace std;
int allSolution(string &s,int i,int j,long long target){
    long long result=0;
    for(int m=i;m<=j;m++){
        result=result*10+(s[m]-'0');
    }
    if(i==0){
        if(target==result)
            return 1;
        else
            return 0;
        
    }
    int count=allSolution(s,i-1,i-1,target-result)+allSolution(s,i-1,i-1,target+result)+allSolution(s,i-1,j,target);
    return count;
}
int main(){
    int T;
cin>>T;
while(T--){
    string s;
    int k;
    cin>>s;
    cin>>k;
    cout<<allSolution(s,s.size()-1,s.size()-1,k)<<endl;
    
}
    return 0;
}






#招商银行#
全部评论
&请问能说一下第二题的做法吗?我自测通过但是线上就是不可以😭
3
送花
回复
分享
发布于 2020-04-08 20:58
第二题就很奇怪,自测没问题,提交0😥,还拖累了选做题的时间.
2
送花
回复
分享
发布于 2020-04-08 21:00
滴滴
校招火热招聘中
官网直投
第二题示例给的误导了,加减号并不是每两个字符都加,也可以不加。。。如:“123”还有12+3这样的情况。
2
送花
回复
分享
发布于 2020-04-08 21:03
第二题我做的时候一直以为每个数字前面都要加一个符号,结果提交0,后来想想感觉不是。。但是只剩10分钟了。。哎。。
1
送花
回复
分享
发布于 2020-04-08 21:02
大佬求第二题思路,回溯只ac了 90
1
送花
回复
分享
发布于 2020-04-08 21:05
借楼发一下第二题 首先测试样例的确给的挺坑的,第一位前面不能加符号,每两位数字间可以加符号或者不加 回溯,用一个数组来存每一位前面加符号的状态,再记下当前到第几位了。 把所有加符号状态都遍历出来(其实就是暴力),到最后一位的时候,也就是得到一种完整情况后,就去计算当前这一加符号状态得到的结果。
1
送花
回复
分享
发布于 2020-04-08 21:35
&一看还有5分钟,就像英语作文还没写就要交卷了。。。哎呀,胡扯吧
1
送花
回复
分享
发布于 2020-04-08 21:48
java版本 public static void main(String args[]){         Map<Character,Character> map = new HashMap();         map.put('1','1');         map.put('2','5');         map.put('3','8');         map.put('4','7');         map.put('6','9');         map.put('7','4');         map.put('8','3');         map.put('9','6');         Scanner sc = new Scanner(System.in);         int n = sc.nextInt();         while (n >0){            String s = sc.next();            int left = 0;            int right = s.length()-1;            boolean flag = true;            while(left <= right){                if(map.get(s.charAt(right)) != s.charAt(left)){                    flag = false;                    break;                }                right --;                left ++;            }            if(flag){                System.out.println("YES");            }else{                System.out.println("NO");            }             n--;         }     }
1
送花
回复
分享
发布于 2020-04-08 23:42
大佬第二题怎么做😂
点赞
送花
回复
分享
发布于 2020-04-08 20:57
一样,自测没问题,提交0,这到底是什么特殊例子。。。。
点赞
送花
回复
分享
发布于 2020-04-08 21:01
&同求第二题
点赞
送花
回复
分享
发布于 2020-04-08 21:03
自测通过提交0?
点赞
送花
回复
分享
发布于 2020-04-08 21:04
第二题我用动归来做 ac了85% dp[i]存储以i个字符结束的所有可行解。dp[i]用字典存储
点赞
送花
回复
分享
发布于 2020-04-08 21:08
选做题有人写吗?里面怎么各种方向的题都有🙃
点赞
送花
回复
分享
发布于 2020-04-08 21:11
同第一次全ac
点赞
送花
回复
分享
发布于 2020-04-08 22:00
for(int m=i;m<=j;m++){  确定这里没有笔误嘛,我看传进来的i和j每次都是一样的,那循环就只有一次呀
点赞
送花
回复
分享
发布于 2020-04-10 09:58
请问楼主投的什么岗位呀?
点赞
送花
回复
分享
发布于 2020-04-10 23:22
楼主有后续进展吗?
点赞
送花
回复
分享
发布于 2020-04-12 19:55

相关推荐

7 33 评论
分享
牛客网
牛客企业服务