字节跳动2019春招算法题
Posted Harris-H
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字节跳动2019春招算法题相关的知识,希望对你有一定的参考价值。
字节跳动2019春招算法题
1.总结
难度:容易到中等。
一些题出的太烂,不给数据范围,而且内存设置有问题,如果是刷题不建议刷。
2.题目
(1)
简单字符串模拟。
#include<bits/stdc++.h>
using namespace std;
int main()
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++)
string s;cin>>s;
int p = 0;
int ok = 0;
do
int m = s.size();
ok = 0;
for(int j=0;j<m;j++)
if(j+2<m && s[j+1] == s[j] && s[j+2] == s[j])
s.erase(s.begin()+j);
ok = 1;break;
if(j+3<m && s[j+1] == s[j] && s[j+2] == s[j+3])
s.erase(s.begin()+j+3);
ok = 1; break;
while(ok);
cout<<s<<'\\n';
return 0;
(2)
简单计数问题。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int N=1e6+5,M=2e4+5,inf=0x3f3f3f3f,mod=99997867;
const int hashmod[4] = 402653189,805306457,1610612741,998244353;
#define mst(a,b) memset(a,b,sizeof a)
#define db double
#define PII pair<int,int>
#define PLL pair<ll,ll>
#define x first
#define y second
#define pb emplace_back
#define SZ(a) (int)a.size()
#define rep(i,a,b) for(int i=a;i<=b;++i)
#define per(i,a,b) for(int i=a;i>=b;--i)
#define ios ios::sync_with_stdio(false),cin.tie(nullptr)
void Print(int *a,int n)
for(int i=1;i<n;i++)
printf("%d ",a[i]);
printf("%d\\n",a[n]);
template <typename T> //x=max(x,y) x=min(x,y)
void cmx(T &x,T y)
if(x<y) x=y;
template <typename T>
void cmn(T &x,T y)
if(x>y) x=y;
int n,d;
int a[N];
int main()
scanf("%d%d",&n,&d);
rep(i,1,n)
scanf("%d",&a[i]);
ll s = 0;
rep(i,1,n)
int p = upper_bound(a+i,a+n+1,a[i]+d)-a-1;
ll tmp = p-i;
ll v = max(tmp*(tmp-1)>>1,0ll);
//printf("i=%d,v=%lld\\n",i,v);
s = (s+v)%mod;
printf("%lld\\n",s);
return 0;
(3)
dfs就完事了。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int N=1e3+5,M=2e4+5,inf=0x3f3f3f3f,mod=1e9+7;
const int hashmod[4] = 402653189,805306457,1610612741,998244353;
#define mst(a,b) memset(a,b,sizeof a)
#define db double
#define PII pair<int,int>
#define PLL pair<ll,ll>
#define x first
#define y second
#define pb emplace_back
#define SZ(a) (int)a.size()
#define rep(i,a,b) for(int i=a;i<=b;++i)
#define per(i,a,b) for(int i=a;i>=b;--i)
#define IOS ios::sync_with_stdio(false),cin.tie(nullptr)
void Print(int *a,int n)
for(int i=1;i<n;i++)
printf("%d ",a[i]);
printf("%d\\n",a[n]);
template <typename T> //x=max(x,y) x=min(x,y)
void cmx(T &x,T y)
if(x<y) x=y;
template <typename T>
void cmn(T &x,T y)
if(x>y) x=y;
int a[10];
int b[10];
int c[10],ok;
void dfs(int x)
if(ok) return;
if(x==4)
ok = 1;
return;
for(int i=1;i<10;i++)
if(a[i]>=3)
a[i]-=3;
dfs(x+1);
a[i]+=3;
for(int i=1;i<=7;i++)
if(a[i]>0 && a[i+1]>0 &&a[i+2]>0)
a[i]--,a[i+1]--,a[i+2]--;
dfs(x+1);
a[i]++,a[i+1]++,a[i+2]++;
bool ck()
for(int i=1;i<=9;i++)
if(a[i]<2) continue;
a[i]-=2;
ok = 0;
dfs(0);
a[i]+=2;
if(ok) return true;
return false;
int main()
rep(i,1,9) b[i] = 4;
rep(i,1,13)
int x;scanf("%d",&x);
a[x]++;
b[x]--;
int jg =0;
for(int i=1;i<=9;i++)
if(!b[i]) continue;
a[i]++;
if(ck()) printf("%d ",i),jg=1;
a[i]--;
if(!jg) puts("0");
return 0;
(4)
简单模拟题 。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int N=1e3+5,M=2e4+5,inf=0x3f3f3f3f,mod=1e9+7;
const int hashmod[4] = 402653189,805306457,1610612741,998244353;
#define mst(a,b) memset(a,b,sizeof a)
#define db double
#define PII pair<int,int>
#define PLL pair<ll,ll>
#define x first
#define y second
#define pb emplace_back
#define SZ(a) (int)a.size()
#define rep(i,a,b) for(int i=a;i<=b;++i)
#define per(i,a,b) for(int i=a;i>=b;--i)
#define IOS ios::sync_with_stdio(false),cin.tie(nullptr)
void Print(int *a,int n)
for(int i=1;i<n;i++)
printf("%d ",a[i]);
printf("%d\\n",a[n]);
template <typename T> //x=max(x,y) x=min(x,y)
void cmx(T &x,T y)
if(x<y) x=y;
template <typename T>
void cmn(T &x,T y)
if(x>y) x=y;
map<PII,vector<int> >mp;
int main()
int t;cin>>t;
while(t--)
mp.clear();
int n;cin>>n;
rep(i,1,n)
int m ;cin>>m;
map<PII,bool>vis;
rep(j,1,m)
int x,y;cin>>x>>y;
if(!vis[x,y])
mp[x,y].pb(i),vis[x,y] =true;
int mx = 0;
int ans = 0;
for(auto [_,v]:mp)
int sz= SZ(v);
int cnt = 0;
for(int i=0;i<sz;i++)
if(!i ||v[i]==v[i-1]+1)
cnt++;
else
ans=max(ans,cnt);
cnt = 1;
ans=max(ans,cnt);
printf("%d\\n",ans);
return 0;
(5)
比较板的状压dp,但是出的什么牛马,卡空间。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int N=1e3+5,M=2e4+5,inf=0x3f3f3f3f,mod=1e9+7;
const int hashmod[4] = 402653189,805306457,1610612741,998244353;
#define mst(a,b) memset(a,b,sizeof a)
#define db double
#define PII pair<int,int>
#define PLL pair<ll,ll>
#define x first
#define y second
#define pb emplace_back
#define SZ(a) (int)a.size()
#define rep(i,a,b) for(int i=a;i<=b;++i)
#define per(i,a,b) for(int i=a;i>=b;--i)
#define IOS ios::sync_with_stdio(false),cin.tie(nullptr)
void Print(int *a,int n)
for(int i=1;i<n;i++)
printf("%d ",a[i]);
printf("%d\\n",a[n]);
template <typename T> //x=max(x,y) x=min(x,y)
void cmx(T &x,T y)
if(x<y) x=y;
template <typename T>
void cmn(T &x,T y)
if(x>y) x=y;
int a[20][20];
int dp[1<<18][18];
int main()
int n ;cin>>n;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
cin>>a[i][j];
int st = 1<<n;
mst(dp,0x3f);
dp[1][0] = 0;
int ans = 1e9;
for(int i=0;i<st;i++)
for(int j=0;j<n;j++)
if(i>>j&1)
for(int k=0;k<n;k++)
if(!(i>>k&1))
cmn(dp[i|(1<<k)][k],dp[i][j]+a[j][k]);
字节跳动2019春招研发部分编程题汇总题解