由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 贡献个题
相关主题
问个Amazon面试题Google面试问题
a2z(amazon 子公司)电面题目nvidia面试题
罗马数字转换成十进制T家在线题2道 (转载)
好不容易写了个bug free, 可是被说会秒据, 帮看看leetcode Valid Sudoku 就是通不过
A tricky question求助:一道careercup的算法题
Amazon面试问题两道算法题
请教一道google的题目, zip compression问两道数字题
google 面经问一道题
相关话题的讨论汇总
话题: int话题: digit话题: return话题: used话题: input
进入JobHunting版参与讨论
1 (共1页)
a*******y
发帖数: 1040
1
you are given nos 1,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 u hav to form a 9 digit no such
dat 1st 2 digits are divisible by 2,1st 3 digits are divisible by 3,1st 4
digits are divisible by 4 and so on..... (repetitions not allowed)
但是我觉得那个最后fail的情况我return -1 不太好,这样即使fail了还会再在这个错
的上面try组合,虽然我让他即使退出了,但是还会有函数调用在stack上,还有怎么能
让这个函数return那个正确的值哪?本体只有一个正确的值
int GenerateNumber(string input, int digit, bool used[],int number, int n)
{
int temp = 0;
//early termination if failed
int numbeofdigit = 0;
int tempnumber = number;
while (tempnumber)
{
tempnumber /= 10;
numbeofdigit++;
}
if (numbeofdigit < digit)
return -1;
if (digit == 9)
{
cout << number<< endl;
return number;
}
for (int i = 0; i {
if (!used[i])
{
if (digit >= 1)
{
if ((number*10 + (input[i] - '0'))%(digit+1) == 0)
{
int total = number*10 + (int)(input[i] - '0');
used[i] = true;
temp = GenerateNumber(input, digit+1, used, total,n);
used[i] = false;
}

}
else
{

int total = number * 10 + (int)(input[i] - '0');
used[i] = true;
temp = GenerateNumber(input, digit+1, used, total,n);
used[i] = false;
}
}
}
return -1;
}
p*****2
发帖数: 21240
2
bruteforce+prunning?
a*******y
发帖数: 1040
3
我晕,你怎么prune
p*****2
发帖数: 21240
4
答案是381654729
l******n
发帖数: 9344
5
这题有问题,1st 5 digits are divisible by 5,就说个位数必须是5,但是1st 2
digits are divisible by 2,说个位数必须是偶数
我理解有问题?

【在 a*******y 的大作中提到】
: you are given nos 1,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 u hav to form a 9 digit no such
: dat 1st 2 digits are divisible by 2,1st 3 digits are divisible by 3,1st 4
: digits are divisible by 4 and so on..... (repetitions not allowed)
: 但是我觉得那个最后fail的情况我return -1 不太好,这样即使fail了还会再在这个错
: 的上面try组合,虽然我让他即使退出了,但是还会有函数调用在stack上,还有怎么能
: 让这个函数return那个正确的值哪?本体只有一个正确的值
: int GenerateNumber(string input, int digit, bool used[],int number, int n)
: {
: int temp = 0;
: //early termination if failed

p*****2
发帖数: 21240
6

你理解有问题吧?看我答案。

【在 l******n 的大作中提到】
: 这题有问题,1st 5 digits are divisible by 5,就说个位数必须是5,但是1st 2
: digits are divisible by 2,说个位数必须是偶数
: 我理解有问题?

l******n
发帖数: 9344
7
好像全部从左边算起的,我想的是右边

【在 p*****2 的大作中提到】
:
: 你理解有问题吧?看我答案。

p*****2
发帖数: 21240
8

嗯。很常规的一道题。楼主是面啥公司碰到的?

【在 l******n 的大作中提到】
: 好像全部从左边算起的,我想的是右边
a*******y
发帖数: 1040
9
对,这题很常规,recursion就行了,我的问题不是这个,我的问题是怎么修改让他返
回正确值
p*****2
发帖数: 21240
10

int dfs(StringBuffer sb, boolean[] visited)
{
int len=sb.length();

if(len>0 && Integer.parseInt(sb.toString())%len!=0)
return -1;

if(len==9)
return Integer.parseInt(sb.toString());

for(int i=1;i<=9;i++)
{
if(!visited[i])
{
sb.append(i);
visited[i]=true;
int ret=dfs(sb,visited);
visited[i]=false;
sb.deleteCharAt(sb.length()-1);
if(ret>0)
return ret;
}
}
return -1;
}

【在 a*******y 的大作中提到】
: 对,这题很常规,recursion就行了,我的问题不是这个,我的问题是怎么修改让他返
: 回正确值

a*******y
发帖数: 1040
11
你这个和我写的那个没啥区别,却别是你用java
not all path have return value

【在 p*****2 的大作中提到】
:
: int dfs(StringBuffer sb, boolean[] visited)
: {
: int len=sb.length();
:
: if(len>0 && Integer.parseInt(sb.toString())%len!=0)
: return -1;
:
: if(len==9)
: return Integer.parseInt(sb.toString());

p*****2
发帖数: 21240
12

你的问题是什么?

【在 a*******y 的大作中提到】
: 你这个和我写的那个没啥区别,却别是你用java
: not all path have return value

1 (共1页)
进入JobHunting版参与讨论
相关主题
问一道题A tricky question
问个google面试题Amazon面试问题
请教一道G家面试题请教一道google的题目, zip compression
攒人品发Google onsite面经google 面经
问个Amazon面试题Google面试问题
a2z(amazon 子公司)电面题目nvidia面试题
罗马数字转换成十进制T家在线题2道 (转载)
好不容易写了个bug free, 可是被说会秒据, 帮看看leetcode Valid Sudoku 就是通不过
相关话题的讨论汇总
话题: int话题: digit话题: return话题: used话题: input