欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

某公司笔试真题

程序员文章站 2022-05-20 21:32:52
...

(仅仅记录一下)

1.模拟栈

某公司笔试真题

#include<bits/stdc++.h>
using namespace std;
string h1,h2,h3;
char temp;
int len1,len2;
stack<char>ss;
int main()
{
    cin>>h1>>h2;
    len1=h1.length();
    len2=h2.length();
    h3="";
    if(len1!=len2)
        printf("-1\n");
    else{

    for(int i=len1-1, j=0; i>=0 && j<len2 ; ){
            temp=h2[j];
            ss.push(h1[i]);
            h3+="E";
            while(!ss.empty()&& temp==ss.top() ){
                h3+="D";
                ss.pop();///出栈
                j++;///往下走
                temp=h2[j];
                if(i<0 || j>=len2)
                    break;
            }
            i--;
        }
        if(ss.empty()){
            cout<<h3<<endl;
        }
        else
            cout<<"-1"<<endl;
    }
}

2.优雅暴力

某公司笔试真题

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
int mp[200][20000];
map<LL,LL>flag;
map<LL,LL>xpp[200];
int main()
{
    int t,n,sum,x;
    int num=0;
    scanf("%d",&t);
    int maxx=1;
    while(t--){
        sum=0;
        num++;///第几组
        scanf("%d",&n);
        for(int i=1;i<=n;i++){
            scanf("%d",&x);
            sum+=x;
            mp[num][i]=x;
        }
        xpp[num][sum]=1;
         flag[sum]++;
        for(int i=1;i<=n;i++){
            if(xpp[num][sum-mp[num][i]]==0)
            {
                flag[sum-mp[num][i]]++;
                xpp[num][sum-mp[num][i]]=1;
            }
            if(flag[sum-mp[num][i]]>maxx)
                maxx=flag[sum-mp[num][i]];
       ///         cout<<"num:"<<num<<" :"<<sum-mp[num][i]<<endl;
        }
    }
    printf("%d\n",maxx);

}

3.数位dp。待补。

题目链接:

某公司笔试真题

https://blog.csdn.net/weixin_40124642/article/details/104567788

相关标签: