备战秋招面试,微信搜索公众号【TechGuide】关注更多新鲜好文和互联网大厂的笔经面经。
作者@TechGuide【全网同名】
点赞再看,养成习惯,您动动手指对原创作者意义非凡🤝
1、剪刀石头布
python实现
def win(b):
wintimesleft,wintimesright=0,0
if b[0]=="S" and "J" in b[2:]:
wintimesleft+=1
elif b[0]=="J" and "B" in b[2:]:
wintimesleft+=1
elif b[0]=="B" and "S" in b[2:]:
wintimesleft+=1
if b[1]=="S" and "J" in b[2:]:
wintimesright+=1
elif b[1]=="J" and "B" in b[2:]:
wintimesright+=1
elif b[1]=="B" and "S" in b[2:]:
wintimesright+=1
if wintimesleft>wintimesright:
print("left")
elif wintimesleft==wintimesright:
print("same")
else:
print("right")
while True:
try:
T=int(input())
index=0
a=[]
while index<T:
a.append(input().split(" "))
index+=1
for line in a:
win(line)
except:
break
#作者:牛客463320147号
#链接:https://www.nowcoder.com/discuss/501925?#type=6&channel=666&source_id=discuss_center_discuss_hot
#来源:牛客网
java实现
import java.util.*;
public class zbr01
{
public static int n,m;
public static int []arr=new int[100005];
public static int []b=new int[100005];
public static void main(String[] args)
{
Scanner S=new Scanner(System.in);
int T=S.nextInt();
for(int z=1;z<=T;z++)
{
String s=S.next(); char a=s.charAt(0);
s=S.next(); char b=s.charAt(0);
s=S.next(); char c=s.charAt(0);
s=S.next(); char d=s.charAt(0);
int x1=0,x2=0;
if(a=='J'&&d=='B'||a=='J'&&c=='B') x1++;
if(a=='S'&&d=='J'||a=='S'&&c=='J') x1++;
if(a=='B'&&d=='S'||a=='B'&&c=='S') x1++;
if(b=='J'&&d=='B'||b=='J'&&c=='B') x2++;
if(b=='S'&&d=='J'||b=='S'&&c=='J') x2++;
if(b=='B'&&d=='S'||b=='B'&&c=='S') x2++;
if(x1==x2) System.out.println("same");
else if(x1>x2) System.out.println("left");
else System.out.println("right");
}
}
}
2、构造字符串,本质是求最长重复子串
import java.util.*;
public class Solution {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
String str = in.next();
if(n<=2){
System.out.println(n);
return;
}
int mid = n/2;
for (int i = mid; i >1; i--) {
if(canCopy(str,i)){
System.out.println(n+1-i);
return;
}
}
System.out.println(n);
}
private static boolean canCopy(String str, int mid) {
for (int i = 0; i < mid; i++) {
char c1 = str.charAt(i);
char c2 =str.charAt(i+mid);
if(c1 != c2) return false;
}
return true;
}
}
作者:tianyikun
链接:https://www.nowcoder.com/discuss/501925?type=6&channel=666&source_id=discuss_center_discuss_hot
来源:牛客网
3,涂栅栏方案数
import java.util.*;
public class zbr01
{
public static int n,m,k;
public static long mod=1000000007;
public static long [][]dp=new long [1005][15];
public static int [][]p=new int [15][15];
public static void main(String[] args)
{
Scanner S=new Scanner(System.in);
int T=S.nextInt();
for(int z=1;z<=T;z++)
{
n=S.nextInt(); m=S.nextInt(); k=S.nextInt();
for(int i=1;i<=m;i++) for(int j=1;j<=m;j++) p[i][j]=0;
for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) dp[i][j]=0;
for(int i=1;i<=m;i++)
{
for(int j=1;j<=k;j++)
{
int x=S.nextInt();
p[i][x]=1;
}
}
for(int i=1;i<=m;i++) dp[1][i]=1;
long ans=0;
for(int i=2;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
for(int k=1;k<=m;k++)
{
if(p[j][k]==1) continue;
dp[i][k]=(dp[i-1][j]+dp[i][k])%mod;
}
}
}
for(int i=1;i<=m;i++) ans=(ans+dp[n][i])%mod;
System.out.println(ans);
}
}
}
4,打怪初始血量
import java.util.*;
public class zbr01
{
public static int []a1=new int[1005];
public static int []a2=new int[1005];
public static int []b1=new int[1005];
public static int []b2=new int[1005];
public static int []pa1=new int[1005];
public static int []pa2=new int[1005];
public static int []pb1=new int[1005];
public static int []pb2=new int[1005];
public static int [][]dp=new int[1005][1005];
public static int inf=2000000001;
public static void main(String[] args)
{
Scanner S=new Scanner(System.in);
int n=S.nextInt();
for(int i=n;i>=1;i--) a1[i]=S.nextInt();
for(int i=1;i<=n;i++) {a2[i]=S.nextInt(); pa2[i]=pa2[i-1]+a2[i];}
for(int i=n;i>=1;i--) b1[i]=S.nextInt();
for(int i=1;i<=n;i++) {b2[i]=S.nextInt(); pb2[i]=pb2[i-1]+b2[i];}
for(int i=1;i<=n;i++) {pa1[i]=pa1[i-1]+a1[i]; pb1[i]=pb1[i-1]+b1[i];}
for(int i=0;i<=n;i++) for(int j=0;j<=n;j++) dp[i][j]=inf; dp[0][0]=0;
for(int i=0;i<=n;i++) for(int j=0;j<=n;j++)
{
if(i>=1)
{
int res=dp[i-1][j];
res-=pa1[i-1]; res+=pb1[i-1]; res-=pa2[j]; res+=pb2[j];
if(res>=a1[i]) dp[i][j]=Math.min(dp[i][j],dp[i-1][j]);
else dp[i][j]=Math.min(dp[i][j],dp[i-1][j]+(a1[i]-res));
}
if(j>=1)
{
int res=dp[i][j-1];
res-=pa1[i]; res+=pb1[i]; res-=pa2[j-1]; res+=pb2[j-1];
if(res>=a2[j]) dp[i][j]=Math.min(dp[i][j],dp[i][j-1]);
else dp[i][j]=Math.min(dp[i][j],dp[i][j-1]+(a2[j]-res));
}
}
System.out.println(dp[n][n]+1);
}
}
阅读题目可以查看原文链接。