299-e-Bulls and Cows
来源:互联网 发布:网站流量统计工具 知乎 编辑:程序博客网 时间:2024/06/10 01:35
数字游戏,根据提示猜数字。乍一看就是哈希了,好像不难上手就写,但后来发现自己根本没完全理解要求导致老是错误。难点在于当有重复数字时确定那个cows,也就是b。反正自己写了蛮久cows的逻辑,我只看出了b不能大于secret中该字的出现次数,然后就是改啊改的,就是不完全对。原因在于自己没有搞懂它确定的逻辑到底是什么。提交了n次后怒查答案,发现有个思路是将secret和guess都哈希然后其各位最小值之和就是bulls和cows之和,bulls很好确定,于是相减就得出b了。至于为什么是bulls和cows之和我还得想想,但反正ac了。另外就是由于是c写的,而b可能大于10,所以还得处理字符串貌似我的ide还用不乐itoa,真是不省心。。。
反正写的不好,ac代码如下:
char *int2str(char *result, int num) { if (num == 0) { return result; } int a = num % 10; num /= 10; int2str(result, num); result[strlen(result)] = a + 48; result[strlen(result)] = '\0'; return result;}char* getHint(char* secret, char* guess) { int a = 0, b = 0, sp = 0, gp = 0; int *hashSecret = (int *)calloc(10, sizeof(int)); //表示原表各个数字个数的表 int *hashSource = (int *)calloc(10, sizeof(int)); //动态求哈希值时表征原表的表 int *hashGuess = (int *)calloc(10, sizeof(int)); //动态表征猜表的表 memset(hashSecret, 0, sizeof(int) * 10); memset(hashSource, 0, sizeof(int) * 10); memset(hashGuess, 0, sizeof(int) * 10); for (int i = 0; secret[i] != '\0'; i++) { sp = secret[i] - 48; hashSecret[sp] += 1; gp = guess[i] - 48; hashGuess[gp] += 1; if (secret[i] == guess[i]) a++; } for (int i = 0; i < 10; i++) { printf("%d: sec-->%d, source-->%d, gue-->%d\n", i, hashSecret[i], hashSource[i], hashGuess[i]); } int tmpa = 0, tmpb = 0; int secCount = 0, ammu = 0; for (int i = 0; i < 10; i++) { tmpa = hashSource[i]; tmpb = hashGuess[i]; secCount = hashSecret[i]; if (tmpb <= secCount) ammu += tmpb; else ammu += secCount; } b = ammu - a; char *result = (char *)calloc(10,sizeof(char)); char *as = NULL, *bs = NULL; if (a != 0) { as = (char *)calloc(32, sizeof(char)); int2str(as, a); for (int i = 0; as[i] != '\0'; i++) result[i] = as[i]; } else result[0] = '0'; result[strlen(result)] = 'A'; if (b != 0) { bs = (char *)calloc(32, sizeof(char)); int2str(bs, b); for (int i = strlen(result), j = 0; bs[j] != '\0'; i++, j++) result[i] = bs[j]; } else result[strlen(result)] = '0'; result[strlen(result)] = 'B'; free(hashSecret); free(hashGuess); free(hashSource); return result;}
0 0
- 299-e-Bulls and Cows
- [299] Bulls and Cows
- [299] Bulls and Cows
- leetcode 299:Bulls and Cows
- Bulls and Cows leetcode 299
- leetcode 299 : Bulls and Cows
- 【LeetCode-299】Bulls and Cows
- [LeetCode 299] Bulls and Cows
- [leetcode 299] Bulls and Cows
- 【LeetCode】299 Bulls and Cows
- LeetCode 299 Bulls and Cows
- leetcode 299 Bulls and Cows
- LeetCode 299:Bulls and Cows
- 【LEETCODE】299-Bulls and Cows
- Leetcode 299 Bulls and Cows
- Leetcode 299:Bulls and Cows
- LeetCode 299 Bulls and Cows
- leetcode 299 Bulls and Cows
- 最大子矩阵和问题
- 实时系统概念
- jsp站点
- Oracle学习(八)----sql语言
- Eclipse自动添加注释
- 299-e-Bulls and Cows
- CNN学习笔记
- 鼠标经过图片,图片变大。
- Ugly Number II
- PHP const 与 define的区别
- medusa详细教程
- 微软研发制胜策略读书笔记
- XML中的转义字符和CDATA表示
- SpannableString与SpannableStringBuilder使用【原创】