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;
}
荣耀工作强度 439人发布