其实技术岗都是一样的题,前面的小题考了智力题、逻辑题、数学概率题、数据库、计网、C++、机器学习等等等等
然后后面两道编程题。
AC代码
S=input()
T=input()
n=len(S)
m=len(T)
count=n-m+1
l_s=list(S)
l_t=list(T)
sum=0
for j in range(0,count):
distance=0
for i in l_t:
if i != l_s[j]:
distance+=1
j=j+1
sum+=distance
print(sum)
我没做出来
贴上赛码网上看到的AC代码点击打开链接
“其实只有两种情况啊,一种是1后面若干0,另一种是若干n(1<=n<=9),至于是哪种,是被最短的那块木板限制的
(n-1)个0和1~9各n个的话,一定是能拼出所有的n位数的,短板的那个只有n个的数字(或者(n-1)个的0)会在拼(n+1)位数时先限制可以拼出的数字
我的思路下,AC代码是这样的,有其他思路的欢迎来讨论”
#include <bits/stdc++.h>
using namespace std;
#define FOR(x,y) for (int x = 0; x < y; ++x)
#define For(x,y,z) for (int x = y; x <= z; ++x)
#define ms(x,y) memset (x, y, sizeof(x))
const int N = 1010;
int min (int * a)
{
int x = a[0] + 1, y = 0;
For(i,1,9) if (a[i] < x) x = a[i], y = i;
return y;
}
void solve (char * s)
{
int a[10];
ms(a,0);
int l = strlen(s);
FOR(i,l) ++a[s[i]-'0'];
int k = min(a);
if (!k)
{
printf ("1");
FOR(i,a[k]+1) printf ("0");
}
else FOR(i,a[k]+1) printf ("%d", k);
printf ("\n");
}
int main ()
{
char s[N];
while (~scanf ("%s", s)) solve (s);
return 0;
}