四个工人,四个任务,每个人做不同的任务需要的时间不同,求任务分配的最优方案。(2005年5月29日全国计算机软件资格水平考试——软件设计师的算法题)。
输入一颗二元查找树,将该树转换为它的镜像,即在转换后的二元查找树中,左子树的结点都大于右子树的结点。用递归和循环两种方法完成树的镜像转换。 例如输入:定义二元查找树的结点为:struct BSTreeNode // a node in the binary search tree (BST){ int m_nValue; // value of node BSTreeNode *m_pLeft; // left child of node BSTreeNode *m_pRight; // right child of node};定义二元查找树的结点为:struct BSTreeNode // a node in the binary search tree (BST){ int m_nValue; // value of node BSTreeNode *m_pLeft; // left child of node BSTreeNode *m_pRight; // right child of node};
输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。要求时间复杂度为O(n)。
如何理解委托?
阅读下列说明和C++代码,填补代码中的空缺,将解答填入答题纸的对应栏内。【说明】以下C++代码实现两类交通工具(Flight和Train)的简单订票处理,类Vehicle、Flight、Train之间的关系如图6—1所示。【C++代码】#include#includeusingnamespacestd;clasSVehicle{public:virtual~Vehicle(){}voidbook(intn){//订n张票if(getTicket()>=n){decreaseTicket(n);}else{coutv;V.push—back(newFlight());V.pushback(newTrain());V.pushback(newFlight());V.push_back(newTrain());V.push_back(newTrain());cout
输入两个整数序列。其中一个序列表示栈的push顺序,判断另一个序列有没有可能是对应的pop顺序。为了简单起见,我们假设push序列的任意两个整数都是不相等的。 比如输入的push序列是1、2、3、4、5,那么4、5、3、2、1就有可能是一个pop系列。因为可以有如下的push和pop序列:push 1,push 2,push 3,push 4,pop,push 5,pop,pop,pop,pop,这样得到的pop序列就是4、5、3、2、1。但序列4、3、5、1、2就不可能是push序列1、2、3、4、5的pop序列。
阅读以下说明和C代码,填补代码中的空缺,将解答填入答题纸的对应栏内。[说明1]递归函数is elem(char ch,char*set)的功能是判断ch中的字符是否在set表示的字符集合中,若是,则返回1,否则返回0。[C代码1] int is—elem(char ch,char*set) { if(*set==‘\0’) return 0; else if ( (1) ) return 1; else return is—elem( (2) ); }【说明2】函数char*combine(char*setA,char*setB)的功能是将字符集合A(元素互异,由setA表示)和字符集合B(元素互异,由setB表示)合并,并返回合并后的字符集合。【C代码2】char* combj ne(char*setA,char*setB) { int i, lenA, lenB, lenC; lenA=strlen(setA); lenB=strlen(setB); char*setC= (char*)malloc(1enA+lenB+1); if (!setC) return NULL ; strncpy(setc, setA, lenA); //将setA的前lenA个字符复制后存入setc lenc= (3); for (i=0; i<lenB; i++) if((4) ) //调用is—elem判断字符是否在setA中 setC[1enC++] =setB[i]; (5)=‘\0’; //设置合并后字符集的结尾标识 return SetC; }
游标的作用?如何知道游标已经到了最后?
一个台阶总共有n级,如果一次可以跳1级,也可以跳2级。求总共有多少总跳法,并分析算法的时间复杂度。
一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。
输入一个单向链表,输出该链表中倒数第k个结点。链表的倒数第0个结点为链表的尾指针。链表结点定义如下: struct ListNode{ int m_nKey; ListNode* m_pNext;};
Windows“回收站”占用的是______中的空间。
new有几种用法
.asp.net如何实现MVC模式,举例说明!
列举一下你所了解的XML技术及其应用
求最大连续递增数字串(如“ads3sl456789DF3456ld345AA”中的“456789”)
不开辟新空间完成字符串的逆序
求网格中的黑点分布(有6*7的网格,在某些格子中有黑点,已知各行与各列中有黑点的点数之和)
n个数字(0,1,…,n-1)形成一个圆圈,从数字0开始,每次从这个圆圈中删除第m个数字(第一个为当前数字本身,第二个为当前数字的下一个数字)。当一个数字删除后,从被删除数字的下一个继续删除第m个数字。求出在这个圆圈中剩下的最后一个数字。 n个数字(0,1,…,n-1)形成一个圆圈,从数字0开始,每次从这个圆圈中删除第m个数字(第一个为当前数字本身,第二个为当前数字的下一个数字)。当一个数字删除后,从被删除数字的下一个继续删除第m个数字。求出在这个圆圈中剩下的最后一个数字。
实现strstr功能(寻找子串在父串中首次出现的位置)