Amazon online test - 考試

Ursula avatar
By Ursula
at 2013-03-25T10:43

Table of Contents

※ 引述《lancert (本來沒有我)》之銘言:
: ※ 引述《sinread (電腦真耗錢)》之銘言:
: : 小弟不才剛剛也去考試了, 回報一下試題:
: : 1. 給一個int array, 再給一個S, 請利用array 內的東西組成S, 如果組不出來
: : 回傳-1
: : EX1: {1,3,5}, S= 11
: : A: 3; --> 3 = 5+5+1
: : EX2: {5, 5, 5, 5, 5, 5}, S=11
: : A: -1;
: Dynamic Programming O(N)
: C#
: static int mincoins(int[] a, int N, int S)
: {
: int i,j,k;
: int[] num = new int[S+1];
: num[0] = 0;
: for(i=1;i<=S;i++)
: {
: num[i]=-1;
: }
: for (i = 0; i <= S; i++)
: {
: if (num[i] != -1)
: {
: for (j = 0; j < N; j++)
: {
: k = i+a[j];
: if (k <= S)
: {
: if (num[k] == -1 || num[k] > num[i] + 1)
: {
: num[k] = num[i] + 1;
: }
: }
: }
: }
: }
: return num[S];
: }

第一題是對的,複雜度要把S也算進去,但可以更簡潔。提供以下代碼:

static int min_coins(int[] a, int N, int S)
{
int i, j;

int[] num = new int[S + 1];

num[0] = 0;

for (i = 1; i <= S; i++)
{
num[i] = S + 1;
}

for (i = 0; i < N; ++i)
{
for (j = a[i]; j <= S; ++j)
{
if (num[j - a[i]] + 1 < num[j])
{
num[j] = num[j - a[i]] + 1;
}
}
}

return num[S] == S + 1 ? -1 : num[S];
}


: : 2. 取 int 的 1's 補數
: : EX1: 50 -> 110010
: : A: 13 -> 001101
: : EX2: 100 -> 1100100
: : 27 -> 0011011
: Basic Logic O(logn)
: C#
: static int complement(int n)
: {
: int[] bits = new int[32];
: int bit_length = 0;
: int i;
: if (n == 0)
: {
: return 1;
: }
: else
: {
: bit_length = 0;
: while (n > 0)
: {
: if (n % 2 == 0)
: {
: bits[bit_length++] = 1;
: }
: else
: {
: bits[bit_length++] = 0;
: }
: n /= 2;
: }
: n = 0;
: for (i = bit_length - 1; i >= 0; i--)
: {
: n = n + n + bits[i];
: }
: }
: return n;
: }
: }

第二題是錯的,你忘了考慮負數,這也是唯一的陷阱。

可以分成 n < 0, n > 0和 n = 0來做。提供以下代碼:

static int complement1(int n)
{
int ret = 0;
int i;
if (n < 0)
{
for (i = 0; i < 32; ++i)
{
ret |= (1 - ((n >> i) & 1)) << i;
}
}
else if (n > 0)
{
for (i = 0; n > 0; ++i, n >>= 1)
{
ret |= (1 - (n & 1)) << i;
}
}
else
{
ret = 1;
}
return ret;
}
}


--
Tags: 考試

All Comments

Dinah avatar
By Dinah
at 2013-03-29T15:41
如果要考慮負數 就不會有可變長度
Elma avatar
By Elma
at 2013-03-31T03:11
EX給的就是可變長度 不是固定長度
Irma avatar
By Irma
at 2013-04-03T00:15
而且考慮正負的情況下 所有正數的1'complement都是負數
是你自己過度解釋題目
Odelette avatar
By Odelette
at 2013-04-04T12:11
沒錯,題目上有寫 0 ~ 100000 而已 原分享人忘了寫

非本科系畢,欲加入社工相關工作

Faithe avatar
By Faithe
at 2013-03-25T00:25
如題。小女本身已在基金會從事快三年的相關經驗,也接觸到很多低收入戶及育幼院的孩子,很想往這方面進修努力。 在育幼院老師推薦下搜尋了社會� ...

Amazon online test

Catherine avatar
By Catherine
at 2013-03-24T17:54
※ 引述《sinread (電腦真耗錢)》之銘言: : 小弟不才剛剛也去考試了, 回報一下試題: : 1. 給一個int array, 再給一個S, 請利用array 內的東西組成S, 如果組不� ...

Amazon online test

Emma avatar
By Emma
at 2013-03-24T13:57
小弟不才剛剛也去考試了, 回報一下試題: 1. 給一個int array, 再給一個S, 請利用array 內的東西組成S, 如果組不出來 回傳-1 EX1: {1,3,5}, S= 11 A: 3; --andgt; 3 = ...

漢翔剛打給我面試

Victoria avatar
By Victoria
at 2013-03-23T14:53
剛剛漢翔打給我 聲音是一個年邁以長的聲音 他叫我準備4份104履歷給人資單位,部門主管用, 說看我要應徵cnc還是鉗工 技術員 還要去警察局辦良民證 � ...

裁員 待業 面試 成長

Noah avatar
By Noah
at 2013-03-23T00:14
求職時間 2013/1/17 - 2013/3/21 全台灣最南邊的國立科大 碩 系統廠SW RD,(Embedded Linux,Android App) 資歷 1.2Y 104 求職紀錄 --andgt; 主動應徵紀錄:91,通知我的�� ...