m*******s 发帖数: 23 | 1 一个空调遥控器,按一下按键可以升高或降低1度或5度或10度。
给定要调整的温度比如说升高9度, 求最少的按键次数。 | z****e 发帖数: 54598 | | m*******s 发帖数: 23 | 3 能给出递推公式吗?
【在 z****e 的大作中提到】 : dp
| a***n 发帖数: 623 | 4 不需要dp吧,仅仅是1、5、10
int times(int degree) {
return degree/10 + min((degree%10/5 + min(degree%5, 5-degree%5)), 10-
degree%10);
}
这样不对吗? | t*********u 发帖数: 26311 | 5 8是10-2 不是5+3
【在 a***n 的大作中提到】 : 不需要dp吧,仅仅是1、5、10 : int times(int degree) { : return degree/10 + min((degree%10/5 + min(degree%5, 5-degree%5)), 10- : degree%10); : } : 这样不对吗?
| a***n 发帖数: 623 | 6 嗯刚刚注意到了,不过还是可以很容易确定下来。一行代码比较ugly可以写多行。
【在 t*********u 的大作中提到】 : 8是10-2 不是5+3
| t*********u 发帖数: 26311 | 7 先把10 弄走
剩下的乘以2对5 取mod 就知道下一步怎么走了
【在 a***n 的大作中提到】 : 嗯刚刚注意到了,不过还是可以很容易确定下来。一行代码比较ugly可以写多行。
| m*******s 发帖数: 23 | 8 先把大于10的部分去掉是个好办法。
10以内的部分还是不知道咋整
【在 t*********u 的大作中提到】 : 先把10 弄走 : 剩下的乘以2对5 取mod 就知道下一步怎么走了
| l*********8 发帖数: 4642 | 9 int keyCount(int n) {
static int count[10] = {0, 1, 2, 3, 2, 1, 2, 3, 3, 2};
n = abs(n);
return n/10 + count[n % 10];
}
【在 m*******s 的大作中提到】 : 先把大于10的部分去掉是个好办法。 : 10以内的部分还是不知道咋整
| m*******s 发帖数: 23 | 10 这个能得出正确结果。
10以内的必须用hard coded吗?
【在 l*********8 的大作中提到】 : int keyCount(int n) { : static int count[10] = {0, 1, 2, 3, 2, 1, 2, 3, 3, 2}; : n = abs(n); : return n/10 + count[n % 10]; : }
| | | w********s 发帖数: 1570 | 11 有个int array = {-10, -5, -1, 1, 5, 10}
要求sum = want - current temperature的最少个数。
你的题目中,sum = 9
似乎是个广度搜索
level = 0的时候set = {-10, -5, -1, 1, 5, 10}
level = 1的时候set = {-20, -15, -11, .....}
直到set找到你的目标数值。
【在 m*******s 的大作中提到】 : 一个空调遥控器,按一下按键可以升高或降低1度或5度或10度。 : 给定要调整的温度比如说升高9度, 求最少的按键次数。
| m*******s 发帖数: 23 | 12 BFS能行, 多谢!
【在 w********s 的大作中提到】 : 有个int array = {-10, -5, -1, 1, 5, 10} : 要求sum = want - current temperature的最少个数。 : 你的题目中,sum = 9 : 似乎是个广度搜索 : level = 0的时候set = {-10, -5, -1, 1, 5, 10} : level = 1的时候set = {-20, -15, -11, .....} : 直到set找到你的目标数值。
| U***A 发帖数: 849 | 13 请问DP怎么搞?
【在 z****e 的大作中提到】 : dp
| U***A 发帖数: 849 | 14 这样是不是复杂度太高了?
【在 w********s 的大作中提到】 : 有个int array = {-10, -5, -1, 1, 5, 10} : 要求sum = want - current temperature的最少个数。 : 你的题目中,sum = 9 : 似乎是个广度搜索 : level = 0的时候set = {-10, -5, -1, 1, 5, 10} : level = 1的时候set = {-20, -15, -11, .....} : 直到set找到你的目标数值。
| c*******y 发帖数: 98 | 15 x%10 == 0 : x/10
x%10 == 1 : x/10+1
x%10 == 2 : x/10+2
x%10 == 3 : x/10+3 (+5-1-1, +1+1+1)
x%10 == 4 : x/10+2 (+5-1)
x%10 == 5 : x/10+1
x%10 == 6 : x/10+2
x%10 == 7 : x/10+3
x%10 == 8 : x/10+3
x%10 == 9 : x/10+2
Test:
1) 13 -> 1+3=4 -> 10+5-1-1
2) 79 -> 7+2=9 -> 10*7+10-1
...
Don't know if this is right. | c*******y 发帖数: 98 | 16
oh.. already a same answer.. shy...
【在 c*******y 的大作中提到】 : x%10 == 0 : x/10 : x%10 == 1 : x/10+1 : x%10 == 2 : x/10+2 : x%10 == 3 : x/10+3 (+5-1-1, +1+1+1) : x%10 == 4 : x/10+2 (+5-1) : x%10 == 5 : x/10+1 : x%10 == 6 : x/10+2 : x%10 == 7 : x/10+3 : x%10 == 8 : x/10+3 : x%10 == 9 : x/10+2
|
|