演算法設計與分析2018 9第一周作業

2021-08-27 16:02:48 字數 1345 閱讀 5222

difficulty:hard

在寫之前先補充一些c++的基本語法

看建構函式發現有find_if這個函式,

void trimlefttrailingspaces(string &input) ));

}

根據網上用法

find_if:根據指定的pred運算條件(以仿函式表示),迴圈查詢[first,last)內的所有元素,找出第乙個令pred運算結果true者。如果找到就返回乙個inputiterator指向該元素,否則就返回迭代器last。

inputiterator find_if(inputiterator first,inputiterator last,predicate pred)

其中的predicate pred除了可以用上面的匿名函式來代替,也可以用函式物件替代

其中函式物件的使用方法如下:

class studentadapter:public unary_functionbool>

//傳入student乙個引數,也可以用binary( , , bool)傳入兩個引數

bool

operator()(const student& student)//過載運算子

};main主函式中:

find_if(admin.begin(),admin.end(),studentadapter("lanzhihui"));

本題目的是找出bst中的兩個放錯位置的節點

主要的方法是利用中序遍歷,找出兩個沒有從小到大放的數,例如某二叉樹中序遍歷之後為1,3,2,4那麼就是3和2是需要交換的節點。

下面是通過的**:

class solution 

inorder(root->left);

trees.push_back(root);

inorder(root->right);

}void swap(treenode& firstnode,treenode& secondnode)

void recovertree(treenode* root)

}for (int i = trees.size() - 1; i >0; i--)

}//cout << "before swap:" << firstnode->val << " " << secondnode->val << endl;

swap(*firstnode, *secondnode);

//cout<<"after swap:"<< firstnode->val << " " << secondnode->val << endl;

}};

《演算法設計與分析》第一周作業

標籤 空格分隔 課堂作業 姓名 李 學號 16340114 題目 valid parentheses 題目概要 給定一串只包含 的字串,判斷該字串中的括號是否合法地閉合。思路 發現一對合法的子字串,如 就將該子字串消去,再對修改後的輸入字串進行該操作,直到字串無法繼續進行消去操作,如字串完全被消掉則...

演算法,第一周

題目 給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1...

系統分析與設計 第一周

解答 軟體工程是應用系統的 規範的 可量化的方法來開發,操作和維護軟體。即工程應用於軟體的方法研究。解答 落後的軟體生產方式無法滿足迅速增長的計算機軟體需求,從而導致軟體開發與維護過程 現一系列嚴重問題的現象。專案執行超預算 專案執行時間過長 軟體效率很低 軟體質量很差 軟體通常不符合要求 專案難以...