8.12京东笔试 300%

1、先枚举移动的位数,再数修改的位数

int main()
{
    int n;
    string s;
    cin>>n>>s;
    int ans=1e9;
    for(int i=0;i<=n;i++)
    {
        int l=0,r=n-1,cnt=0;
        while(l<r)
        {
            if(s[l]!=s[r])
                cnt++;
            l++;
            r--;
        }
        cnt+=i;
        ans=min(ans,cnt);
        char ch=s[0];
        s.erase(0,1);
        s.push_back(ch);

    }
    cout<<ans<<endl;

    return 0;
}

2、递推计一下数,n=1的情况要特殊处理

const int N=2e5+1000,mod=1e9+7;

ll cnt[N][10];

int main()
{
    int n;
    ll a[N];
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>a[i];
    if(n==1)
    {
        for(int i=0;i<=9;i++)
        {
            if(i==a[1])
                cout<<1<<" ";
            else
                cout<<0<<" ";
        }
        return 0;

    }
    cnt[1][(a[n-1]+a[n])%10]++;
    cnt[1][(a[n-1]*a[n])%10]++;
    for(int i=2;i<=n-1;i++)
    {
        for(int j=0;j<=9;j++)
        {
            cnt[i][(j*a[n-i])%10]=(cnt[i][(j*a[n-i])%10]+cnt[i-1][j])%mod;
            cnt[i][(j+a[n-i])%10]=(cnt[i][(j+a[n-i])%10]+cnt[i-1][j])%mod;
        }
    }
    for(int i=0;i<=9;i++)
        cout<<cnt[n-1][i]<<" ";
    return 0;
}

3、暴力枚举点的坐标就行

#include<bits/stdc++.h>
#define x first
#define y second
#define mem(a,b) memset(a,b,sizeof(a))
#define F(i,l,r) for(int i=l;i<=r;i++)
using namespace std;

typedef long long ll;
typedef pair<int,int> pii;
typedef unsigned long long ull;

const int N=52;

int n,m,a[N][N];
vector<pii> v;

bool check(pii x)
{
    for(auto p:v)
        if(p==x)
            return true;
    return false;
}
int main()
{
    cin>>n>>m;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
        {
            char ch;
            cin>>ch;
            if(ch=='X')
                v.push_back({i,j});
        }
    int ans=0;
    for(int i=0;i<v.size();i++)
        for(int j=i+1;j<v.size();j++)
    {
        pii a=v[i],b=v[j];
        pii c={b.x+b.y-a.y,b.y-(b.x-a.x)},d={a.x+b.y-a.y,a.y-(b.x-a.x)};
        if(check(c)&&check(d))
            ans++;
        c={b.x-(b.y-a.y),b.y+b.x-a.x},d={a.x-(b.y-a.y),a.y+b.x-a.x};
        if(check(c)&&check(d))
            ans++;
    }
    cout<<ans/4<<endl;
    return 0;
}

全部评论
太牛啦
点赞 回复 分享
发布于 2023-08-12 21:33 辽宁
点赞 回复 分享
发布于 2023-08-12 21:41 广东
膜拜
点赞 回复 分享
发布于 2023-08-12 21:54 上海
nb,膜拜大佬
点赞 回复 分享
发布于 2023-08-13 11:13 广东
第三题找另外两个点是咋想的,真牛波啊
点赞 回复 分享
发布于 2023-08-14 14:03 江苏

相关推荐

牛舌:如果我不想去,不管对方给了多少,我一般都会说你们给得太低了。这样他们就会给下一个offer的人更高的薪资了。
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-21 17:16
科大讯飞 算法工程师 28.0k*14.0, 百分之三十是绩效,惯例只发0.9
点赞 评论 收藏
分享
11 49 评论
分享
牛客网
牛客企业服务