摘要:然而,一棵給定的二叉搜索樹卻可以由多種不同的插入序列得到。輸出格式對(duì)每一組需要檢查的序列,如果其生成的二叉搜索樹跟對(duì)應(yīng)的初始序列生成的一樣,輸出,否則輸出。
本篇為關(guān)于樹的編程題,給出編譯器 C++(g++)的解答。主要記錄題意理解和代碼學(xué)習(xí)過程。
給定兩棵樹T1和T2。如果T1可以通過若干次左右孩子互換就變成T2,則我們稱兩棵樹是“同構(gòu)”的。例如圖1給出的兩棵樹就是同構(gòu)的,因?yàn)槲覀儼哑渲幸豢脴涞慕Y(jié)點(diǎn)A、B、G的左右孩子互換后,就得到另外一棵樹。而圖2就不是同構(gòu)的。
現(xiàn)給定兩棵樹,請(qǐng)你判斷它們是否是同構(gòu)的。
輸入格式:
輸入給出2棵二叉樹樹的信息。對(duì)于每棵樹,首先在一行中給出一個(gè)非負(fù)整數(shù)N (≤10),即該樹的結(jié)點(diǎn)數(shù)(此時(shí)假設(shè)結(jié)點(diǎn)從0到N?1編號(hào));隨后N行,第i行對(duì)應(yīng)編號(hào)第i個(gè)結(jié)點(diǎn),給出該結(jié)點(diǎn)中存儲(chǔ)的1個(gè)英文大寫字母、其左孩子結(jié)點(diǎn)的編號(hào)、右孩子結(jié)點(diǎn)的編號(hào)。如果孩子結(jié)點(diǎn)為空,則在相應(yīng)位置上給出“-”。給出的數(shù)據(jù)間用一個(gè)空格分隔。注意:題目保證每個(gè)結(jié)點(diǎn)中存儲(chǔ)的字母是不同的。
輸出格式:
如果兩棵樹是同構(gòu)的,輸出“Yes”,否則輸出“No”。
輸入樣例1(對(duì)應(yīng)圖1):
8 A 1 2 B 3 4 C 5 - D - - E 6 - G 7 - F - - H - - 8 G - 4 B 7 6 F - - A 5 1 H - - C 0 - D - - E 2 -
輸出樣例1:
Yes
輸入樣例2(對(duì)應(yīng)圖2):
8 B 5 7 F - - A 0 3 C 6 - H - - D - - G 4 - E 1 - 8 D 6 - B 5 - E - - H - - C 0 2 G - 3 F - - A 1 4
輸出樣例2:
No解讀題目
首先理解同構(gòu)的意思,題目中的同構(gòu)是指左右孩子相同即可。一種簡(jiǎn)單的判斷兩棵樹是否同構(gòu)的方法是看結(jié)點(diǎn)的兒子,如果都一樣,則是同構(gòu)。很明顯,圖1中的兩棵樹是同構(gòu)的,而圖2中的兩棵樹C下面的兒子就不同,因此它們不同構(gòu)。
本題要求我們輸入兩棵樹的信息,判斷它們是否同構(gòu)。這棵二叉樹的信息表示如輸入樣例所示,第一個(gè)數(shù)是整數(shù),告訴我們這棵樹有幾個(gè)結(jié)點(diǎn),對(duì)每個(gè)結(jié)點(diǎn)來說有三個(gè)信息:結(jié)點(diǎn)本身,左兒子,右兒子。左右兒子通過編號(hào)來表示,若為空則用-來表示。但要注意的是這里沒有規(guī)定一定要從根節(jié)點(diǎn)來開始編號(hào),即能以任意的順序進(jìn)行編號(hào)。所以要解這道題我們還需要進(jìn)行判別根結(jié)點(diǎn)在哪里。
我們需要的事情有三個(gè):二叉樹表示,建二叉樹,同構(gòu)判別。
實(shí)現(xiàn)代碼#include提交結(jié)果 2 List Leaves 題目#include using namespace std; #define Max_Node 11 #define END -1 typedef struct node { char value; int left; int right; }Node; //獲取樹的輸入,并將輸入的字符合理轉(zhuǎn)化成整型數(shù)字 void CreateTree(vector & Tree,int N) { char value,left,right; for (int i=0; i >value>>left>>right; Tree[i].value=value; if (left=="-") { Tree[i].left=END; }else { Tree[i].left=left-"0"; } if (right=="-") { Tree[i].right=END; }else { Tree[i].right=right-"0"; } } } //尋找樹的樹根:樹根沒有其它的結(jié)點(diǎn)指向它 int FindTreeRoot(vector & Tree,int N) { int Flag[Max_Node]; for (int i=0; i & Tree1,vector & Tree2) { if (Tree1[Root1].value==Tree2[Root2].value) { //兩結(jié)點(diǎn)相等,并都是葉子結(jié)點(diǎn) if (Tree1[Root1].left==END && Tree1[Root1].right==END && Tree2[Root2].left==END && Tree2[Root2].right==END) { return true; } //以下四種情況:兩個(gè)結(jié)點(diǎn)都是有一個(gè)孩子為空,另一個(gè)子樹不空且這兩個(gè)孩子相等的情形 if (Tree1[Tree1[Root1].left].value==Tree2[Tree2[Root2].left].value && Tree1[Root1].right==END && Tree2[Root2].right==END) { return IsOmorphic(Tree1[Root1].left, Tree2[Root2].left, Tree1, Tree2); } if (Tree1[Tree1[Root1].left].value==Tree2[Tree2[Root2].right].value && Tree1[Root1].right==END && Tree2[Root2].left==END) { return IsOmorphic(Tree1[Root1].left, Tree2[Root2].right, Tree1, Tree2); } if (Tree1[Tree1[Root1].right].value==Tree2[Tree2[Root2].left].value && Tree1[Root1].left==END && Tree2[Root2].right==END) { return IsOmorphic(Tree1[Root1].right, Tree2[Root2].left, Tree1, Tree2); } if (Tree1[Tree1[Root1].right].value==Tree2[Tree2[Root2].right].value && Tree1[Root1].left==END && Tree2[Root2].left==END) { return IsOmorphic(Tree1[Root1].right, Tree2[Root2].right, Tree1, Tree2); } //以下兩種:兩個(gè)結(jié)點(diǎn)的孩子都相等的情形 if (Tree1[Tree1[Root1].left].value==Tree2[Tree2[Root2].left].value && Tree1[Tree1[Root1].right].value==Tree2[Tree2[Root2].right].value) { return (IsOmorphic(Tree1[Root1].left, Tree2[Root2].left, Tree1, Tree2))&&(IsOmorphic(Tree1[Root1].right, Tree2[Root2].right, Tree1, Tree2)); } if (Tree1[Tree1[Root1].left].value==Tree2[Tree2[Root2].right].value && Tree1[Tree1[Root1].right].value==Tree2[Tree2[Root2].left].value) { return (IsOmorphic(Tree1[Root1].left, Tree2[Root2].right, Tree1, Tree2))&&(IsOmorphic(Tree1[Root1].right, Tree2[Root2].left, Tree1, Tree2)); } } //不符合以上7種情況表明這兩棵樹不同構(gòu) return false; } int main(int argc, const char * argv[]) { //輸入兩顆二叉樹的信息 int N1=0; cin>>N1; vector Tree1(Max_Node); CreateTree(Tree1,N1); int N2=0; cin>>N2; vector Tree2(Max_Node); CreateTree(Tree2,N2); if (N1!=N2) { cout<<"No"; }else { if (N1==0) { cout<<"Yes"; }else { //建二叉樹 int root1=FindTreeRoot(Tree1,N1); int root2=FindTreeRoot(Tree2,N2); //判斷是否同構(gòu) if (IsOmorphic(root1, root2, Tree1, Tree2)) { cout<<"Yes"; }else { cout<<"No"; } } } return 0; }
Given a tree, you are supposed to list all the leaves in the order of top down, and left to right.
Input Specification:
Each input file contains one test case. For each case, the first line gives a positive integer N (≤10) which is the total number of nodes in the tree -- and hence the nodes are numbered from 0 to N?1. Then N lines follow, each corresponds to a node, and gives the indices of the left and right children of the node. If the child does not exist, a "-" will be put at the position. Any pair of children are separated by a space.
Output Specification:
For each test case, print in one line all the leaves" indices in the order of top down, and left to right. There must be exactly one space between any adjacent numbers, and no extra space at the end of the line.
Sample Input:
8 1 - - - 0 - 2 7 - - - - 5 - 4 6
Sample Output:
4 1 5實(shí)現(xiàn)代碼
#include提交結(jié)果 3 是否同一棵二叉搜索樹 題目#include #include int flag=0;//用于判斷結(jié)果輸出格式的 struct NodeInf{//樹的節(jié)點(diǎn)信息,左右兒子下標(biāo) int LeftIndex; int RightIndex; }; struct BinTreeNode{//樹節(jié)點(diǎn) int Element;//編號(hào) struct BinTreeNode* Left; struct BinTreeNode* Right; }; int FindTreeHead(int book[],int n)//查找樹根 { for(int i=0;i Element=treehead; Queue[tail++]=BinTree; while(head Element].LeftIndex!=-1){ Temp=(struct BinTreeNode*)malloc(sizeof(struct BinTreeNode)); Temp->Element=nodeinf[Queue[head]->Element].LeftIndex; Queue[head]->Left=Temp; Queue[tail++]=Temp; } else{ Queue[head]->Left=NULL; } if(nodeinf[Queue[head]->Element].RightIndex!=-1){ Temp=(struct BinTreeNode*)malloc(sizeof(struct BinTreeNode)); Temp->Element=nodeinf[Queue[head]->Element].RightIndex; Queue[head]->Right=Temp; Queue[tail++]=Temp; } else{ Queue[head]->Right=NULL; } if(Queue[head]->Left==NULL&&Queue[head]->Right==NULL){//判斷是否為葉子 if(flag) printf("%c"," "); printf("%d",Queue[head]->Element); flag=1; } head++; } putchar(" "); return; } int main() { int n; char ch; struct NodeInf nodeinf[10];//存儲(chǔ)節(jié)點(diǎn)信息 int treehead;//樹根 int book[10];//標(biāo)記是別人兒子的節(jié)點(diǎn),則未標(biāo)記的就為樹根 memset(book,0,sizeof(book)); scanf("%d",&n); for(int i=0;i =0&&ch-"0"<=9){ nodeinf[i].LeftIndex=ch-"0"; book[ch-"0"]=1; } else nodeinf[i].LeftIndex=-1; getchar(); scanf("%c",&ch); if(ch-"0">=0&&ch-"0"<=9){ nodeinf[i].RightIndex=ch-"0"; book[ch-"0"]=1; } else nodeinf[i].RightIndex=-1; } treehead=FindTreeHead(book,n);//找樹根 CreBinTreeAndPriLeaves(treehead,nodeinf); return 0; }
給定一個(gè)插入序列就可以唯一確定一棵二叉搜索樹。然而,一棵給定的二叉搜索樹卻可以由多種不同的插入序列得到。例如分別按照序列{2, 1, 3}和{2, 3, 1}插入初始為空的二叉搜索樹,都得到一樣的結(jié)果。于是對(duì)于輸入的各種插入序列,你需要判斷它們是否能生成一樣的二叉搜索樹。
輸入格式:
輸入包含若干組測(cè)試數(shù)據(jù)。每組數(shù)據(jù)的第1行給出兩個(gè)正整數(shù)N (≤10)和L,分別是每個(gè)序列插入元素的個(gè)數(shù)和需要檢查的序列個(gè)數(shù)。第2行給出N個(gè)以空格分隔的正整數(shù),作為初始插入序列。最后L行,每行給出N個(gè)插入的元素,屬于L個(gè)需要檢查的序列。
簡(jiǎn)單起見,我們保證每個(gè)插入序列都是1到N的一個(gè)排列。當(dāng)讀到N為0時(shí),標(biāo)志輸入結(jié)束,這組數(shù)據(jù)不要處理。
輸出格式:
對(duì)每一組需要檢查的序列,如果其生成的二叉搜索樹跟對(duì)應(yīng)的初始序列生成的一樣,輸出“Yes”,否則輸出“No”。
輸入樣例:
4 2 3 1 4 2 3 4 1 2 3 2 4 1 2 1 2 1 1 2 0
輸出樣例:
Yes No No解讀題目
本題要求我們對(duì)于輸入的各種插入序列,判斷它們是否能生成一樣的二叉搜索樹。在輸入樣例中包含三部分內(nèi)容。第一部分是第一行的兩個(gè)整數(shù):4表示插入序列所包含的個(gè)數(shù),即二叉樹的結(jié)點(diǎn)個(gè)數(shù),2表示后面有兩個(gè)序列需要取比較和前面是否一樣;第二部分是輸入的序列;第三部分就是后面輸入的若干組序列,它們要和第一組序列做比較。
這道題實(shí)際上是兩個(gè)序列是否對(duì)應(yīng)相同搜索樹的判別。
實(shí)現(xiàn)代碼#include#include using namespace std; typedef struct node Node; struct node{ int left; int right; }; //初始化二叉樹函數(shù) void Init_Tree(vector &Tree,int N) { for ( int i = 1 ; i <= N ; i++){ Tree[i].left = -1; Tree[i].right = -1; } } //建樹函數(shù) void Build_Tree(vector &Tree,int N) { int value; int flag = 0; int root = 0; int pre = 0; while(N--){ cin>>value; if ( flag == 0){ root = value; pre = root; flag = 1; }else{ while(1){ //當(dāng)前輸入值比訪問的上一個(gè)結(jié)點(diǎn)pre(pre最初為根結(jié)點(diǎn))大,且pre有右孩子 if (value > pre && Tree[pre].right != -1){ pre = Tree[pre].right; } //當(dāng)前輸入值比訪問的上一個(gè)結(jié)點(diǎn)pre(pre最初為根結(jié)點(diǎn))大,且pre無右孩子 if (value > pre && Tree[pre].right == -1){ Tree[pre].right = value; pre = root;//下一次輸入數(shù)字也從根結(jié)點(diǎn)開始比較 break; } //當(dāng)前輸入值比訪問的上一個(gè)結(jié)點(diǎn)pre(pre最初為根結(jié)點(diǎn))小,且pre有左孩子 if (value &Tree1,vector提交結(jié)果 4 Root of AVL Tree 題目&Tree2 ,int N) { bool flag = true; for ( int i = 1 ; i <= N ; i++){ if (!(Tree1[i].left == Tree2[i].left && Tree1[i].right == Tree2[i].right)){ flag = false; break; } } return flag; } int main() { int N,L; int flag = 0; while(1){ cin>>N; if ( N == 0){ break; } cin>>L; vector > Tree(L,vector (11)); vector tree(11); Init_Tree(tree,N); for ( int i = 0 ; i < L ; i++){ Init_Tree(Tree[i],N); } Build_Tree(tree,N); for ( int i = 0 ; i < L ; i++){ Build_Tree(Tree[i],N); if (Compare_Tree(tree,Tree[i],N)){ if ( flag == 0){ flag = 1; cout<<"Yes"; }else{ cout<<" "<<"Yes"; } }else{ if ( flag == 0){ flag = 1; cout<<"No"; }else{ cout<<" "<<"No"; } } } } return 0; } An AVL tree is a self-balancing binary search tree. In an AVL tree, the heights of the two child subtrees of any node differ by at most one; if at any time they differ by more than one, rebalancing is done to restore this property. Figures 1-4 illustrate the rotation rules.
Now given a sequence of insertions, you are supposed to tell the root of the resulting AVL tree.
Input Specification:
Each input file contains one test case. For each case, the first line contains a positive integer N (≤20) which is the total number of keys to be inserted. Then N distinct integer keys are given in the next line. All the numbers in a line are separated by a space.Output Specification:
For each test case, print the root of the resulting AVL tree in one line.Sample Input 1:
5 88 70 61 96 120Sample Output 1:
70Sample Input 2:
7 88 70 61 96 120 90 65Sample Output 2:
88實(shí)現(xiàn)代碼#include提交結(jié)果 5 堆中的路徑 題目using namespace std; typedef int ElemType; typedef struct AVLTreeNode *AVLTree; struct AVLTreeNode { ElemType data; AVLTree left; AVLTree right; int height; }; int GetHeight(AVLTreeNode *tree) { if (tree == NULL) return -1; //空樹返回-1 else return tree->height; } int Max(int a,int b) { if (a > b) return a; else return b; } AVLTree SingleLeftRotation(AVLTree A) { /* 注意:A 必須有一個(gè)左子結(jié)點(diǎn) B */ /* 將 A 與 B 做如圖 4.35 所示的左單旋,更新 A 與 B 的高度,返回新的根結(jié)點(diǎn) B */ AVLTree B = A->left; A->left = B->right; B->right = A; A->height = Max(GetHeight(A->left), GetHeight(A->right)) + 1; B->height = Max(GetHeight(B->left), A->height) + 1; return B; } AVLTree SingleRightRotation(AVLTree A) { /* 注意:A 必須有一個(gè)左子結(jié)點(diǎn) B */ /* 將 A 與 B 做如圖 4.35 所示的右單旋,更新 A 與 B 的高度,返回新的根結(jié)點(diǎn) B */ AVLTree B = A->right; A->right = B->left; B->left = A; A->height = Max(GetHeight(A->right), GetHeight(A->left)) + 1; B->height = Max(GetHeight(B->right), A->height) + 1; return B; } AVLTree DoubleLeftRightRotation(AVLTree A) { /* 注意:A 必須有一個(gè)左子結(jié)點(diǎn) B,且 B 必須有一個(gè)右子結(jié)點(diǎn) C */ /* 將 A、B 與 C 做如圖 4.38 所示的兩次單旋,返回新的根結(jié)點(diǎn) C */ A->left = SingleRightRotation(A->left); /*將 B 與 C 做右單旋,C 被返回*/ return SingleLeftRotation(A); /*將 A 與 C 做左單旋,C 被返回*/ } AVLTree DoubleRightLeftRotation(AVLTree A) { /* 注意:A 必須有一個(gè)左子結(jié)點(diǎn) B,且 B 必須有一個(gè)右子結(jié)點(diǎn) C */ /* 將 A、B 與 C 做如圖 4.38 所示的兩次單旋,返回新的根結(jié)點(diǎn) C */ A->right = SingleLeftRotation(A->right); /*將 B 與 C 做右單旋,C 被返回*/ return SingleRightRotation(A); /*將 A 與 C 做左單旋,C 被返回*/ } AVLTree AVL_Insertion(ElemType X, AVLTree T) { /* 將 X 插入 AVL 樹 T 中,并且返回調(diào)整后的 AVL 樹 */ if (!T) { /* 若插入空樹,則新建包含一個(gè)結(jié)點(diǎn)的樹 */ T = (AVLTree)malloc(sizeof(struct AVLTreeNode)); T->data = X; T->height = 0; T->left = T->right = NULL; } /* if (插入空樹) 結(jié)束 */ else if (X < T->data) { /* 插入 T 的左子樹 */ T->left = AVL_Insertion(X, T->left); if (GetHeight(T->left) - GetHeight(T->right) == 2) /* 需要左旋 */ if (X < T->left->data) T = SingleLeftRotation(T); /* 左單旋 */ else T = DoubleLeftRightRotation(T); /* 左-右雙旋 */ } /* else if (插入左子樹) 結(jié)束 */ else if (X > T->data) { /* 插入 T 的右子樹 */ T->right = AVL_Insertion(X, T->right); if (GetHeight(T->left) - GetHeight(T->right) == -2) /* 需要右旋 */ if (X > T->right->data) T = SingleRightRotation(T); /* 右單旋 */ else T = DoubleRightLeftRotation(T); /* 右-左雙旋 */ } /* else if (插入右子樹) 結(jié)束 */ /* else X == T->Data,無須插入 */ T->height = Max(GetHeight(T->left), GetHeight(T->right)) + 1; /*更新樹高*/ return T; } int main() { int n; cin >> n; AVLTree root = NULL; int x; for (int i = 0; i < n; i++) { cin >> x; root = AVL_Insertion(x, root); } cout << root->data; return 0; } 將一系列給定數(shù)字插入一個(gè)初始為空的小頂堆H[]。隨后對(duì)任意給定的下標(biāo)i,打印從H[i]到根結(jié)點(diǎn)的路徑。
輸入格式:
每組測(cè)試第1行包含2個(gè)正整數(shù)N和M(≤1000),分別是插入元素的個(gè)數(shù)、以及需要打印的路徑條數(shù)。下一行給出區(qū)間[-10000, 10000]內(nèi)的N個(gè)要被插入一個(gè)初始為空的小頂堆的整數(shù)。最后一行給出M個(gè)下標(biāo)。輸出格式:
對(duì)輸入中給出的每個(gè)下標(biāo)i,在一行中輸出從H[i]到根結(jié)點(diǎn)的路徑上的數(shù)據(jù)。數(shù)字間以1個(gè)空格分隔,行末不得有多余空格。輸入樣例:
5 3 46 23 26 24 10 5 4 3輸出樣例:
24 23 10 46 23 10 26 10解讀題目本題實(shí)際上是一個(gè)最小堆查詢問題,在輸入樣例中給定5個(gè)數(shù)據(jù)構(gòu)成一個(gè)最小堆,查詢3次。第二行的5個(gè)數(shù)據(jù)就構(gòu)成了一個(gè)最小堆,第三行的5 4 3分別代表最小堆中的下標(biāo)。
實(shí)現(xiàn)代碼#include提交結(jié)果using namespace std; class MinHeap{ private : int* data; int capacity; int size; public: MinHeap(int N){ this->capacity = N; this->size = 0; this->data = new int[10000]; this->data[0] = -10000; } int GetSize(){ return this->size; } bool IsFull(){ return this->size == this->capacity; } bool IsEmpty(){ return this->size == 0; } void Insert(int data){ if ( this->IsFull()){ return ; } int i = ++this->size; for ( ; this->data[i/2] > data ; i /= 2){ this->data[i] = this->data[i/2]; } this->data[i] = data; } void Find_Path(int index){ if (index > this->size){ return; } bool flag = false; for ( int i = index ; i >= 1 ; i /= 2){ if (!flag){ cout< data[i]; flag = true; }else{ cout<<" "< data[i]; } } } }; int main() { int N,L; cin>>N>>L; MinHeap minheap(N); for ( int i = 1 ; i <= N ; i++){ int data; cin>>data; minheap.Insert(data); } for ( int i = 0 ; i < L ; i++){ int index; cin>>index; minheap.Find_Path(index); cout<<" "; } return 0; }
參考鏈接:
03-樹1 樹的同構(gòu) (25分)
PTA List Leaves
04-樹4 是否同一棵二叉搜索樹 (25分)
Root of AVL Tree
05-樹7 堆中的路徑 (25分)不足之處,歡迎指正。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/44784.html
摘要:前端之前端之前言前言昨天學(xué)習(xí)了標(biāo)記式語言,也就是無邏輯語言。今天學(xué)習(xí),被稱之為網(wǎng)頁的化妝師。為前端頁面的樣式,由選擇器作用域與樣式塊組成。年初,組織負(fù)責(zé)的工作組開始討論第一版中沒有涉及到的問題。其討論結(jié)果組成了年月出版的規(guī)范第二版。前端之 CSS 前言 昨天學(xué)習(xí)了標(biāo)記式語言,也就是無邏輯語言。了解了網(wǎng)頁的骨架是什么構(gòu)成的,了解了常用標(biāo)簽,兩個(gè)指令以及轉(zhuǎn)義字符;其中標(biāo)簽可以分為兩大類: 一類...
摘要:應(yīng)直接使用原序列中的結(jié)點(diǎn),返回歸并后的帶頭結(jié)點(diǎn)的鏈表頭指針。要求分別計(jì)算兩個(gè)多項(xiàng)式的乘積與和,輸出第一項(xiàng)為乘積的系數(shù)和指數(shù),第二行為和的系數(shù)和指數(shù)。選定了表示方法后,考慮數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)。選擇鏈表在設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)的時(shí)候有系數(shù)指數(shù)和指針結(jié)構(gòu)指針。 函數(shù)題給出編譯器為 C(gcc) 的解答,編程題給出編譯器 C++(g++) 或 Python(python3) 的解答。 函數(shù)題 兩個(gè)有序鏈表序...
摘要:下面是收集了一些中的一些小技巧,會(huì)不定時(shí)更新,歡迎留言補(bǔ)充。專業(yè)的叫法是,可以保持唯一性,具有復(fù)雜的算法,這里僅僅介紹簡(jiǎn)單的。以下列舉幾種生成方法第一種隨機(jī)程度可以隨著的調(diào)用次數(shù)而變化第二種原理差不多交換值第一種第二種請(qǐng)自行領(lǐng)悟。 下面是收集了一些Javascript中的一些小技巧,會(huì)不定時(shí)更新,歡迎留言補(bǔ)充。 數(shù)字0-6到一二三四五六日的對(duì)應(yīng) Javascript中的日期對(duì)象得到...
摘要:作為十幾年的老開發(fā)者,今天我來分享一下,我個(gè)人認(rèn)為的大學(xué)計(jì)算機(jī)相關(guān)專業(yè)該怎么學(xué),希望你們的四年能夠不負(fù)年華。粉絲專屬福利九關(guān)于考研有能力去考研的,我建議去嘗試一下考研,理由有以下幾點(diǎn)第一,畢業(yè)就工作的人,前三年還處于摸索和定性的階段。 ...
閱讀 3818·2023-04-25 19:07
閱讀 3563·2021-11-22 12:02
閱讀 3145·2021-10-12 10:11
閱讀 3922·2021-09-03 10:49
閱讀 2896·2019-08-30 13:21
閱讀 3011·2019-08-30 11:14
閱讀 2093·2019-08-29 15:40
閱讀 2880·2019-08-28 18:29