华为od机试凉凉
4.1号晚上9点考了这场笔试,题目3道:
第一道,给定字符串让你加密,加密通过将字符串中的一个字母加上一个值,然后再输出,比如a加上一个值例如1,就变成了b,这个值是存在一个数组里的,数组的形式是a[i]=a[i-1]+a[i-2]+a[i-3]。
字符串长度小于50。
输入先输入n,表示几组数据,接下来输入n行。
这道题挺简单的,但是我只通过了样例30%,呜呜呜,我不知道哪的问题,太他么难受了,核心代码我是这样写的,还有他说输入都是小写。
unsigned long long x = str[i]-'a'+1+fac(i);//这里fac的返回值就是那的偏移量,i就是遍历 //的位置 if(x>26){ x = x%26; } char c = x-1+'a'; str[i] = c;
我真的找不出我哪有问题,大佬帮忙找找?我都不知道我怎么挂的。。。
第二题就是TLV,but我还是只通过了35,这道是原题,但是我还是没有AC100%,它给的例子太简单了,测试的估计很复杂。
第三题我用的深度优先,就是手上有n张牌,每张牌有两个属性,一个是数字,一个是颜色,输入是这样的
1 3 3 4 4 5
r r b y y y
第一行代表数字,第二行代表颜色,规则是如果你打了一张牌,那么下一张如果跟上一张颜色或数字一样的话你又可以打出一张牌,直到没牌为止。求打出最多的牌。我用的深度优先和回溯,没进去一层我就加一张牌,但是还是没全过,25%。我觉的我做不出来还好受点,尼玛做出来通过了一些,自己找不到问题,这个问题怎么改善啊,牛客有些样例太简单了,错的实现都可以通过,还有考试的时候我才知道牛客不能调试,我之前一直以为牛客可以像做练习一样让我调试,结果不能,还好我用了IDE,不过也并没有什么卵用,压根不知道它用了啥刁钻的样例。