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 江苏

相关推荐

01-23 14:54
同济大学 Java
热爱敲代码的程序媛:给你提几点【专业技能】这个模块里面可优化的地方:1.【具备JVM调优经验】可以去b站上搜一下JVM调优的视频,估计一两个小时凭你的学习能力就能掌握JVM调优的实践方面的技能。2.【MySql优化】MySql这一栏,你去b站或者找个博客看看MySql优化,学一下,如果你本身比较熟悉MySql语句的话,那基本半天时间凭你的学习能力MySql语句优化方面的技能你也能掌握个差不多。以上1,2两点主要是因为我看你专业技能大部分都说的是偏理论,没有写应用。再就是最后,你结合你的项目,想一想你的项目中哪些sql语句是可以用MySql优化的,到时候你面试的时候也好结合着说一下。
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
02-12 10:05
小米集团 算法工程师 28.0k*15.0
泡沫灬一触即破:楼上那个看来是看人拿高薪,自己又不如意搁这泄愤呢是吧,看你过往评论很难不怀疑你的精神状态
点赞 评论 收藏
分享
评论
11
49
分享

创作者周榜

更多
牛客网
牛客企业服务