恭喜发现宝藏!微信搜索公众号【TechGuide】关注更多新鲜好文和互联网大厂的笔经面经。
作者@TechGuide【全网同名】
点赞再看,养成习惯,您动动手指对原创作者意义非凡🤝
第一道:身份证(100%)
dfs
int dfs(int i) {
if (i == idx.size()) {
for (int j = 0; j < 17; j++) {
sum[j] = (s[j] - '0') * w[j];
}
int total = accumulate(sum, sum + 17, 0);
int c = total % 11;
return m[c] == s[n-1];
}
int ans = 0;
for (int j = 0; j < 10; j++) {
char t = s[idx[i]];
s[idx[i]] = (char) (j + '0');
ans += dfs(i + 1);
s[idx[i]] = t;
}
return ans;
}
第二道: 求字符串的最后一个单词长度(100%)
StringBuilder sb = new StringBuilder();
for (int i = s.length()-1; i >0; i--) {
if(s.charAt(i)==' '){
if(sb.length()==0){
continue;
}else{
break;
}
}else{
sb.append(s.charAt(i));
}
}
System.out.println(sb.length());
(另一版本的)第二道: 运动员跑步(100%)
拓扑排序判断环
void solve()
{
int n,m,cnt;
cin>>n>>m;
int du[n+1];
bool e[n+1][n+1];
bool vis[n+1];
vector<int> ans;
memset(du,0,sizeof(du));
memset(e,false,sizeof(e));
memset(vis,false,sizeof(vis));
for (int i=0;i<m;++i)
{
int C;
cin>>C;
int order[C];
for (int j=0;j<C;++j)
cin>>order[j];
for (int j=1;j<C;++j)
if (!e[order[j-1]][order[j]])
{
du[order[j]]++;
e[order[j-1]][order[j]]=true;
}
}
queue<int> Q;
bool flag=true;
for (int i=1;i<=n;++i)
if (du[i]==0)
{
Q.push(i);
vis[i]=true;
}
if (Q.size()>1) flag=false;
while (!Q.empty())
{
if (!flag) break;
if (Q.size()>1) {flag=false;break;}
int u=Q.front();
Q.pop();
ans.push_back(u);
for (int j=1;j<=n;++j)
if (e[u][j])
{
du[j]--;
if (du[j]<=0&&!vis[j])
{
vis[j]=true;
Q.push(j);
}
}
}
if (!flag||ans.size()<n) cout<<"NO"<<endl;
else
{
for (int i=0;i<n;++i)
{
cout<<ans[i];
if (i==n-1) cout<<endl;
else cout<<" ";
}
}
}
int main()
{
int T;
cin>>T;
while (T>0)
{
solve();
T--;
}
}
第三道: 最大攻击的最大伤害 期望值(未找到)
类似于expected value,成功和失败的概率,对应其对应的分数