总结

来源:互联网 发布:js判断chrome浏览器 编辑:程序博客网 时间:2024/05/22 05:02
2016.8.13
考试思路:
T1
一开始看题目就想到深搜,然后先按照给出字母的ascii码排个序,在用类似全排列的方法去选,最后选了指定个数的字母后,再判断至少有没有一个元音字母和两个辅音字母,如果有则输出,比赛时只是因为一个小错误所以没能得满分。
T2
深搜。就枚举每个点,从这个点出发,再走5步,每走到一个点就把这个点的数转成字符加入一个字符串里,如果走完5步就判断之前有没有这个字符串,没有走完5步就继续搜索,比赛时因为没有想到更加好的判断有没有出现过的方法,所以错了。
T3
深搜。其实和之前的细胞一题十分相似,就是枚举每一个点,如果这个点是牧场就进入搜索,先把这个点变为非牧场,从这个点扩出去,判断这个点周围的四个点是否是牧场,是的话则把这个点变为非牧场,然后再从这些点扩出去,也就是继续搜索。
T4
看懂了题,可是没有想出方法,于是弃了。


正确思路:
T1
同上。
T2
大概思想同上,只是判断有没有重复时可以用一个六维数组来标记,就可以了。
T3
同上。
T4
动态规划。先把输入转化成每种蚂蚁有多少只,f[i,j]表示前i种蚂蚁取j只的方案数,初始化i从1到种数,f[i,0]和f[i,1]都赋值为1,然后i从1到第一种的数量,在第只有一种可以选的情况下,选几只蚂蚁的方案数就是几,所以初始化f[1,i]:=i,然后动态规划,i从1到种数,j从2到b,k从0到min(第i种的数量,j),状态转移方程f[i,j]:=f[i,j]+f[i-1,j-k],累加现在和之前上一种的方案数,最后累加f[t,i],i从s到b,表示选到第t种,s到b一共有多少种方案数,就可以了。
0 0