迅雷2010校園招聘四川大學第二次筆試答案

2021-05-07 14:01:59 字數 2219 閱讀 3392

第三題找不到很好的解決方案。搜尋+剪枝但感覺複雜度太嚇人;dp狀態太多,記憶體會爆掉;數學方法 ---- 整數拆分,想不出怎麼拆;... 。等候大牛們指點迷津。

感覺這次的試題有一定難度,也很繁瑣。

1,實現void strtol(char* num_str,char** endptr,int base)函式,此函式的功能是將乙個字串num_str轉換成整數。num_str中儲存的是待轉換的字串。字串有8,10,16進製制三種形式,儲存在base引數中,若base為0,則需要自己判斷具體的進製。要判斷是否溢位,若為上溢位,返回int_max,若為下溢位,返回int_min。字串num_str可能存在非法字元,若存在非法字元,返回非法字元前面的轉換結果,並將endptr指向第乙個非法字元,若沒有非法字元,不需要返回endptr。

#注:不能使用任何庫函式。

思路:在 base == 0 時判斷進製,讀數時注意非法字元,就這兩點。

程式:#include

using namespace std;

/** 判斷進製

* 1. num_str中的字元都不大於 '7' 則返回 8 進製

* 2. num_str中的字元都不大於 '9' 則返回 10 進製

* 3. 返回 16 進製

*/int find_base(char *num_str)

else

}if (c <= '7')   return 8;

else if (c <= '9')  return 10;

return 16;

}bool check(char c, int base)

return false;

}int char_to_int(char c, int base)

int str_to_int(char *num_str, char **endptr, int base)

for (; *num_str != '/0'; ++num_str)

sum = sum * base + char_to_int(*num_str, base);

if ((sign == 1) && sum >= int_max)

return int_max;

else if (sign == -1 && sum >= -int_min)

}return (int)sum;

}int strtol(char *num_str, char **endptr, int base)

return str_to_int(num_str, endptr, base);

}int main()

2,從1億個數中,找出最大的1000個數。效率要盡可能的高,使用的額外空間要盡可能小。

void max_num(int* source_num,int* max_num)

source_num:陣列包括所有的1億個數。

max_num:儲存最大的1000個數。

#注:不能使用任何庫函式。

思路:維護乙個有1000個元素的最小堆即可。

比較下乙個元素與堆中的最小值,大於則heap_pop(), 再heap_push()。

最後堆中的1000個元素即為答案。

程式:#include

const int max_num = 5;

const int max_src = 10;

void swap(int &x, int &y)

void heap_fix_down(int root, int *max_num, int size)

}void heap_fix_up(int *max_num, int size)

else 

break;}}

void heap_pop(int *max_num, int& size)

void heap_push(int val, int *max_num, int& size)

void max_1000num(int *source_num, int *max_num)

for (i = max_num; i < max_src; ++i)}}

int main()

;int max_num[max_num];

max_1000num(source_num, max_num);

return 0;

}3,若對於整數n,在集合中找出m個數,使其和等於剩下的n-m個數的和。返回所有可能的組合數。n<10000。

#注:不能使用任何庫函式。

四川大學線下程式設計挑戰 數字填充

題目詳情 peter喜歡玩數字遊戲,但數獨這樣的遊戲對他來說太簡單了,於是他準備玩乙個難的遊戲。遊戲規則是在乙個n n的 裡填數,規則 對於每個輸入的n,從左上角開始,總是以對角線為起點,先橫著填,再豎著填。這裡給了一些樣例,請在樣例中找到規律並把這個n n的 列印出來吧。輸入描述 多組測試資料 資...

2023年四川大學高等代數部分解答

六 解答下列各題 2.設 v 是複數域上的有限維線性空間,h 是 v 上兩兩可交換且可對角化的線性變換組成的線性空間.證明 存在若干線性函式 alpha h to mathbb 使得有如下的空間直和分解 v oplus v 其中,v h v,forall h in h 2.證明 先證明 h 中的任意...

四川大學線下程式設計比賽第三題 書本轉移

題目詳情 小強 有 3 個箱子 a,b,c 用來裝書,所有的書 一共n本 都按序號由小到大的順 序堆在 a上,現在他想把所有的書全都 放到 c 裡面去。每次他從 a 書架 拿 a 本書 不夠就全拿完 到 b,a 箱子翻轉,然後從 b 拿 b 本書 不夠就全 拿完 到 c,b 箱子翻轉。然後重複操作,...