記works Ap初試題

2021-07-12 05:47:08 字數 2583 閱讀 8983

用乙個matrix來表示乙個字元

example:

1 1 1

1 0 0

0 1 0

表示『t『;

1 0 0

0 1 0

1 1 1

表示 『l『。

輸入為 n,m,k。n(2<=n<=10)表示matrix行數,m(2<=m<=10)表示matrix列數,k(2<=k<=6)表示有幾個不同的字元(輸入的k個matrix表示的字元均不同)。題目要求我們找出能區分出每個字元最少需要的matrix元素個數。

比如example中的我們只需要觀察左下方的元素就能區分這兩個字元;因此我們的輸出為1。

題解:

類似特徵選擇,開始想用決策樹來計算,但決策樹存在乙個估計函式,即決策樹作為一種啟發式演算法不一定能拿到最優解,但考慮到這裡的k值較低,需要我們輸出最優解。並且n和m的值較小,我直接對每個matrix進行向量化,然後建樹,樹高<=100,葉子節點表示字元。建樹完成開始進行特徵剔除,在測試特徵剔除後若葉子節點不發生重合則進行實際剔除(時間複雜度o(k*m^2*n^2))。

//[exam1] character recognize

/*case 1:

2 3 2

1 1 1

0 1 0

1 0 0

1 0 0

case 2:

2 2 5

1 1 1 1

1 1 0 0

1 1 1 0

1 0 0 1

0 0 0 1

case 3:

2 2 4

1 1 1 1

1 1 0 0

1 1 1 0

1 0 0 1

*/#include

#include

#include

using

namespace

std;

struct node;

node* root;

queue

level;

vector

levelv;

node* born;

void destroytree(node* cur)

}void creattree(node* &cur,int value)

else

cur=cur->left;

}else

else

cur=cur->right;

}}bool mergetest(node* a,node* b)//將a合併到b中,即在a的遍歷中,在b的相同路徑上不能出現葉子節點

void merge(node* a,node* b)//將a合併到b中

if(a->right!=null)

}bool filter(vector

& tmp)

//coutif(i>=len)

else

if(tmp[i]->right==null)

else

tmp[i]->left=cur->left;

tmp[i]->right=cur->right;

tmp[i]->leaf=cur->leaf;

//cout<<"deleted num: "}

return

true;

}return

false;

}int spare()

else

//cout}

else

level.push(flag);

}levelv.clear();}}

return countcandel;

}int main()

cur->leaf=true;

}int cost=spare();

cout

<<"mid: "

<<"final: "

0;}

給定乙個陣列,選擇字首和字尾部分,對兩個部分全部數值異或,求這個陣列能夠得到的最大的異或值。這兩個部分可以為空。

題解:

這個問題要求兩個部分最大的亦或值,已知異或全部數值後再異或殘留部分就是我們要的解,即這題可以轉化為我們常見的一道動態規劃題:最大連續子串行和。

/*

31 2 3

*/#include

#include

using

namespace

std;

unsigned

int sum=0;

vector

int> value;

int main()

//coutint maxsum=sum,tmpsum=sum;

unsigned

int midsum;

int start,end;

for(int i=0;i//cout<<"no: "maxsum)

else

if(tmpsum//cout<<"fail"}

}cout

0;}

記C語言筆試題

記2021.1.29廣州通則康威筆試 面試的是軟體工程師 c語言偏嵌入式 總共6道題,30分鐘。1.static全域性變數和普通全域性變數的區別?static區域性變數和普通區域性變數的區別?static函式與普通函式的區別?經常會遇到的一道面試題。static修飾的全域性變數限定了該全域性變數的作...

記一次筆試題

1.filter方法 filter 方法建立乙個新的陣列,新陣列中的元素是通過檢查指定陣列中符合條件的所有元素。注意 filter 不會對空陣列進行檢測。如果沒有符合條件的元素則返回空陣列。注意 filter 不會改變原始陣列。var a 0 1,2 a 10 10 console.log a 11...

記一些筆試題

思路 每乙個元素去與後面的元素去比較,只要相等就退出,說明已經找到第乙個重複的字元了。該字串沒有重複字元 例如 輸入 1,4,3,4,null,undefined,nan,null 輸出 6思路 將每乙個元素全部轉成字串,避免了null和undefined的影響。null undefined為tru...