用乙個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...