19. 二叉树的镜像(递归)

即:交换所有节点的左右子树。从下往上 或 从上往下 都可以。

  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4. struct BTNode
  5. {
  6. int v; // default positive Integer.
  7. BTNode *pLeft;
  8. BTNode *pRight;
  9. BTNode(int x) : v(x), pLeft(NULL), pRight(NULL) {}
  10. };
  11. /********************************************************/
  12. /***** Basic functions ***********/
  13. BTNode* createBinaryTree(int r)
  14. {
  15. BTNode *pRoot = new BTNode(r);
  16. int u, v;
  17. cin >> u >> v;
  18. if(u != 0)
  19. pRoot->pLeft = createBinaryTree(u);
  20. if(v != 0)
  21. pRoot->pRight = createBinaryTree(v);
  22. return pRoot;
  23. }
  24. void release(BTNode *root){
  25. if(root == NULL) return;
  26. release(root->pLeft);
  27. release(root->pRight);
  28. delete[] root;
  29. root = NULL;
  30. }
  31. void print(BTNode *root, int level = 1){
  32. if(root == NULL) { cout << "NULL"; return; };
  33. string s;
  34. for(int i = 0; i < level; ++i) s += " ";
  35. cout << root->v << endl << s;
  36. print(root->pLeft, level+1);
  37. cout << endl << s;
  38. print(root->pRight, level+1);
  39. }
  40. /******************************************************************/
  41. void mirrorTree(BTNode *root)
  42. {
  43. if(!root || (!root->pLeft && !root->pRight)) return;
  44. /* 交换左右子树 */
  45. BTNode *pTem = root->pLeft;
  46. root->pLeft = root->pRight;
  47. root->pRight = pTem;
  48.  
  49. mirrorTree(root->pLeft);
  50. mirrorTree(root->pRight);
  51. }
  52.  
  53. int main(){
  54. int TestTime = 3, k = 1;
  55. while(k <= TestTime)
  56. {
  57. cout << "Test " << k++ << ":" << endl;
  58.  
  59. cout << "Create a tree: " << endl;
  60. BTNode *pRoot = createBinaryTree(8);
  61. print(pRoot);
  62. cout << endl;
  63.  
  64. cout << "The mirror tree: " << endl;
  65. mirrorTree(pRoot);
  66. print(pRoot);
  67. cout << endl;
  68.  
  69. release(pRoot);
  70. }
  71. return 0;
  72. }

 20. 顺时针打印矩阵

  1. #include <stdio.h>
  2.  
  3. void printMatrix(int (*A)[], int rows, int columns)
  4. {
  5. if(rows < || columns < ) return;
  6. int r1, r2, c1, c2;
  7. r1 = c1 = , r2 = rows-, c2 = columns-;
  8. while(r1 <= r2 && c1 <= c2) /* 打印结束时, r1 = r2+1, c1 = c2+1; */
  9. {
  10. for(int i = c1; i <= c2 && r1 <= r2; ++i)
  11. printf("%d ", A[r1][i]);
  12. ++r1;
  13. for(int i = r1; c1 <= c2 && i <= r2; ++i)
  14. printf("%d ", A[i][c2]); /* 要保证 c1 <= c2 */
  15. --c2;
  16. for(int i = c2; i >= c1 && r1 <= r2; --i)
  17. printf("%d ", A[r2][i]);
  18. --r2;
  19. for(int i = r2; i >= r1 && c1 <= c2; --i)
  20. printf("%d ", A[i][c1]);
  21. ++c1;
  22. }
  23. printf("\n");
  24. }
  25. int main()
  26. {
  27. int test1[][] = {{, , },
  28. {, , },
  29. {, , }};
  30. printMatrix(test1, , );
  31.  
  32. int test2[][] = {, , };
  33. printMatrix(test2, , );
  34.  
  35. /* // first set int (*A)[1], then began called below.
  36. int test3[3][1] = {{1}, {2}, {3}};
  37. printMatrix(test3, 3, 1);
  38.  
  39. int test4[1][1] = {1};
  40. printMatrix(test4, 1, 1);
  41. */
  42. return ;
  43. }

     (

21. 包含 min  函数的栈

 要求调用 min,pop,push,时间复杂度都是 O(1)。

  1. #include <iostream>
  2. #include <stack>
  3. #include <cassert>
  4. #include <string>
  5. template<typename T> class Stack
  6. {
  7. public:
  8. void push(T value);
  9. void pop();
  10. T min();
  11. private:
  12. std::stack<T> data;
  13. std::stack<T> minData;
  14. };
  15. template<typename T> void Stack<T>::push(T value)
  16. {
  17. data.push(value);
  18. if(minData.empty() || minData.top() >= value)
  19. minData.push(value);
  20. else
  21. minData.push(minData.top());
  22. }
  23. template<typename T> void Stack<T>::pop()
  24. {
  25. assert(data.size() > && minData.size() > );
  26. data.pop();
  27. minData.pop();
  28. }
  29. template<typename T> T Stack<T>::min()
  30. {
  31. return minData.top();
  32. }
  33.  
  34. int main()
  35. {
  36. Stack<char> st;
  37. std::string numbers;
  38. while(std::cin >> numbers)
  39. {
  40. for(size_t i = ; i < numbers.length(); ++i) st.push(numbers[i]);
  41. for(size_t i = ; i < numbers.length(); ++i)
  42. {
  43. std::cout << "st.min(): " << st.min() << std::endl;
  44. st.pop();
  45. }
  46. }
  47. return ;
  48. }

22. 根据栈的压入序列,判断一个序列是否是弹出序列。 

  1. #include <iostream>
  2. #include <string>
  3.  
  4. bool isPopOrder(const std::string pushS, const std::string popS)
  5. {
  6. size_t outId1 = 0, outId2 = 0, len1 = pushS.length(), len2 = popS.length();
  7. if(len1 != len2) return false;
  8. int *stack = new int[len1];
  9. int tail = 0; // 栈尾
  10. while(outId1 < len1 && outId2 < len2)
  11. {
  12. while(pushS[outId1] != popS[outId2])
  13. {
  14. stack[tail++] = pushS[outId1++]; // 入栈
  15. }
  16. outId1++, outId2++;
  17. while(tail != 0 && popS[outId2] == stack[tail-1])
  18. {
  19. ++outId2;
  20. tail--; // 出栈
  21. }
  22. }
  23. delete[] stack;
  24. if(tail == 0) return true; // 栈空
  25. else return false;
  26. }
  27.  
  28. int main()
  29. {
  30. std::string numbers;
  31. std::string popNumbers;
  32. while(std::cin >> numbers >> popNumbers)
  33. {
  34. std::cout << "一个弹出序列? " ;
  35.  
  36. if(isPopOrder(numbers, popNumbers))
  37. std::cout << "true" << std::endl;
  38. else std::cout << "false" << std::endl;
  39. }
  40. return 0;
  41. }

23. 从上往下打印二叉树

 Go:(Chap2: question: 1 - 10—>6. 重建二叉树—>二叉树的各种遍历)Link: http://www.cnblogs.com/liyangguang1988/p/3667443.html

24. 判断序列是否为二叉搜索树的后序遍历(递归)

note: 二叉搜索树和遍历序列一一对应。

例:后序序列 {3,5,4,6,11,13,12, 10, 8} ,可画出一颗二叉搜索树。

  1. #include <iostream>
  2. /* verify the seq which should be the postOrder of a Binary Search Tree */
  3. bool postOrderOfBST(int sequence[], int len)
  4. {
  5. if(sequence == NULL || len == ) return false;
  6. bool answer = false;
  7. int root = sequence[len-]; /* value of root node */
  8.  
  9. int leftLength = ;
  10. for(; leftLength < len-; ++leftLength)
  11. {
  12. if(sequence[leftLength] > root) break;
  13. }
  14. /* verify right-subtree, should big than root */
  15. for(int i = leftLength + ; i < len -; ++i)
  16. {
  17. if(sequence[i] < root) return false;
  18. }
  19.  
  20. int rightLength = len - - leftLength;
  21. bool left = true, right = true;
  22. if(leftLength > )
  23. bool left = postOrderOfBST(sequence, leftLength);
  24. if(rightLength)
  25. bool right = postOrderOfBST(sequence+leftLength, rightLength);
  26. return (left && right);
  27. }
  28.  
  29. void printResult(bool v)
  30. {
  31. std::cout << "Is LRD of a BFS? " ;
  32. if(v) std::cout << "true" << std::endl;
  33. else std::cout << "false" << std::endl;
  34. }
  35. int main()
  36. {
  37. std::cout << "Test 1: ";
  38. int test1[] = {, , , , , , , , };
  39. printResult(postOrderOfBST(test1, sizeof(test1) / )) ;
  40.  
  41. std::cout << "Test 2: ";
  42. int test2[] = {, , };
  43. printResult(postOrderOfBST(test2, sizeof(test2) / ));
  44.  
  45. std::cout << "Test 3: ";
  46. int test3[] = {};
  47. printResult(postOrderOfBST(test3, sizeof(test3) / ));
  48.  
  49. return ;
  50. }

 25. 二叉树中和为某一值的路径(递归)

  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4. using namespace std;
  5. struct BTNode
  6. {
  7. int v; // default positive Integer.
  8. BTNode *pLeft;
  9. BTNode *pRight;
  10. BTNode(int x) : v(x), pLeft(NULL), pRight(NULL) {}
  11. };
  12. /********************************************************/
  13. /***** Basic functions ***********/
  14. BTNode* createBinaryTree(int r)
  15. {
  16. BTNode *pRoot = new BTNode(r);
  17. int u, v;
  18. cin >> u >> v;
  19. if(u != )
  20. pRoot->pLeft = createBinaryTree(u);
  21. if(v != )
  22. pRoot->pRight = createBinaryTree(v);
  23. return pRoot;
  24. }
  25. void release(BTNode *root){
  26. if(root == NULL) return;
  27. release(root->pLeft);
  28. release(root->pRight);
  29. delete[] root;
  30. root = NULL;
  31. }
  32. void print(BTNode *root, int level = ){
  33. if(root == NULL) { cout << "NULL"; return; };
  34. string s;
  35. for(int i = ; i < level; ++i) s += "\t";
  36. cout << root->v << endl << s;
  37. print(root->pLeft, level+);
  38. cout << endl << s;
  39. print(root->pRight, level+);
  40. }
  41. /******************************************************************/
  42. void findPath(BTNode *root, int target, vector<int>& path, int curSum)
  43. {
  44. if(root == NULL) return;
  45. curSum += root->v;
  46. path.push_back(root->v);
  47. if(!root->pLeft && !root->pRight && (curSum == target)) // root node is a leaf, get a path.
  48. {
  49. for(auto it = path.begin(); it != path.end(); ++it)
  50. cout << *it << " ";
  51. cout << endl;
  52. }
  53. findPath(root->pLeft, target, path, curSum);
  54. findPath(root->pRight, target, path, curSum);
  55. path.pop_back();
  56. }
  57.  
  58. void findPath(BTNode *root, int target)
  59. {
  60. if(root == NULL) return;
  61. vector<int> path;
  62. findPath(root, target, path, );
  63. }
  64.  
  65. int main(){
  66. int TestTime = , k = ;
  67. while(k <= TestTime)
  68. {
  69. int root;
  70. cout << "Test " << k++ << ":" << endl;
  71.  
  72. cout << "Create a tree: " << endl;
  73. cin >> root;
  74. BTNode *pRoot = createBinaryTree(root);
  75. print(pRoot);
  76. cout << endl;
  77.  
  78. cout << "target : 22" << endl << "findPath :" << endl;
  79. findPath(pRoot, );
  80.  
  81. release(pRoot);
  82. }
  83. return ;
  84. }

Code

 26. 复杂链表的复制

  1. #include <stdio.h>
  2. typedef char Elem;
  3. typedef struct ComplexListNode
  4. {
  5. Elem e;
  6. ComplexListNode *next;
  7. ComplexListNode *sibling;
  8. } ComplexList;
  9. ComplexListNode Node[] = {};
  10. /***************************************************************/
  11. ComplexList* creatComplexList()
  12. {
  13. for(int i = ; i < ; ++i)
  14. Node[i].e = i + 'A';
  15. char u, v;
  16. while((scanf("%c%c", &u, &v) == ) )
  17. {
  18. if(u >= 'A' && u <= 'Z' && v >= 'A' && v <= 'Z')
  19. {
  20. if(Node[u-'A'].next == NULL)
  21. Node[u-'A'].next = &Node[v-'A'];
  22. else if(Node[u-'A'].sibling == NULL)
  23. Node[u-'A'].sibling = &Node[v-'A'];
  24. }
  25. if(getchar() == '\n') break;
  26. }
  27. return &Node[];
  28. }
  29.  
  30. void printComplexList(ComplexList *pHead)
  31. {
  32. ComplexListNode *p = pHead;
  33. while(p != NULL)
  34. {
  35. printf("%c -> ", p->e);
  36. p = p->next;
  37. }
  38. printf("NULL\n");
  39. p = pHead;
  40. while(p != NULL)
  41. {
  42. if(p->sibling != NULL)
  43. {
  44. printf("%c -> ", p->e);
  45. printf("%c\t", p->sibling->e);
  46. }
  47. p = p->next;
  48. }
  49. }
  50. /***************************************************************************/
  51. void cloneNodes(ComplexList *pHead)
  52. {
  53. ComplexListNode *p = pHead;
  54. while(p != NULL)
  55. {
  56. ComplexListNode *newNode = new ComplexListNode;
  57. newNode->e = p->e + ;
  58. newNode->next = p->next;
  59. newNode->sibling = NULL;
  60. p->next = newNode;
  61. p = newNode->next;
  62. }
  63. }
  64.  
  65. void connectSibling(ComplexList *pHead)
  66. {
  67. ComplexListNode *pPre = pHead, *p;
  68. while(pPre != NULL && pPre->next != NULL)
  69. {
  70. p = pPre->next;
  71. if(pPre->sibling != NULL)
  72. p->sibling = pPre->sibling->next;
  73. pPre = p->next;
  74. }
  75. }
  76.  
  77. ComplexList* getClonedComplexList(ComplexList *pHead)
  78. {
  79. ComplexListNode *pPre = pHead, *newHead = NULL, *p;
  80. while(pPre != NULL && pPre->next != NULL)
  81. {
  82. if(newHead != NULL)
  83. {
  84. p->next = pPre->next;
  85. p = p->next;
  86. }
  87. else
  88. {
  89. newHead = pPre->next;
  90. p = newHead;
  91. }
  92. pPre->next = pPre->next->next;
  93. pPre = pPre->next;
  94. }
  95. return newHead;
  96. }
  97.  
  98. ComplexList* clone(ComplexList *pHead)
  99. {
  100. cloneNodes(pHead);
  101. connectSibling(pHead);
  102. return getClonedComplexList(pHead);
  103. }
  104.  
  105. int main()
  106. {
  107. ComplexList *pHead = creatComplexList();
  108. printf("original List.\n");
  109. printComplexList(pHead);
  110.  
  111. ComplexList *newHead = clone(pHead);
  112. printf("cloned List.\n");
  113. printComplexList(newHead);
  114.  
  115. printf("original List.\n");
  116. printComplexList(pHead);
  117.  
  118. return ;
  119. }

程序说明:对一个结点,若 next 和 sibling 同时为 0,先保存 next 指针。
样例输入:AB AC BC BE CD DE DB(回车换行)

 27.二叉搜索树生成有序双向链表

  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4. typedef struct BTNode
  5. {
  6. int v; // In this code, default positive Integer.
  7. BTNode *pLeft;
  8. BTNode *pRight;
  9. BTNode(int x) : v(x), pLeft(NULL), pRight(NULL) {}
  10. } DbList;
  11. /********************************************************/
  12. /***** Basic functions for binary tree ***********/
  13. BTNode* createBinaryTree() // input a preOrder sequence, 0 denote empty node.
  14. {
  15. BTNode *pRoot = NULL;
  16. int r;
  17. cin >> r;
  18. if(r != ) // equal to if(!r) return;
  19. {
  20. pRoot = new BTNode(r);
  21. pRoot->pLeft = createBinaryTree();
  22. pRoot->pRight = createBinaryTree();
  23.  
  24. }
  25. return pRoot;
  26. }
  27.  
  28. void printBinaryTree(BTNode *root, int level = ){
  29. if(root == NULL) { cout << "NULL"; return; };
  30. string s;
  31. for(int i = ; i < level; ++i) s += " ";
  32. cout << root->v << endl << s;
  33. printBinaryTree(root->pLeft, level+);
  34. cout << endl << s;
  35. printBinaryTree(root->pRight, level+);
  36. }
  37.  
  38. // void releaseBinaryTree(BTNode *root){
  39. // if(root == NULL) return;
  40. // releaseBinaryTree(root->pLeft);
  41. // releaseBinaryTree(root->pRight);
  42. // delete[] root;
  43. // root = NULL;
  44. // }
  45. /******************************************************************/
  46. /****************** basic function for double linked list. *******/
  47. void printDbList(DbList *pHead)
  48. {
  49. if(pHead == NULL) return;
  50. DbList *p = pHead;
  51. cout << "Print from left to right:" << endl;
  52. while(p->pRight != NULL) { cout << p->v << " "; p = p->pRight;}
  53. cout << p->v << endl;
  54.  
  55. cout << "Print from left to right:" << endl;
  56. while(p != NULL) { printf("%-3d", p->v); p = p->pLeft;}
  57. cout << endl;
  58. }
  59. void releaseDbList(DbList *pHead)
  60. {
  61. if(pHead == NULL) return;
  62. releaseDbList(pHead->pRight);
  63. delete[] pHead;
  64. }
  65. /******************************************************************/
  66. /***** binary search tree translate to double linked list ******/
  67. void convert(BTNode *root, BTNode **tail)
  68. {
  69. if(root == NULL) return;
  70.  
  71. if(root->pLeft != NULL)
  72. convert(root->pLeft, tail);
  73. root->pLeft = *tail;
  74. if(*tail)
  75. (*tail)->pRight = root;
  76. *tail = root;
  77.  
  78. if(root->pRight != NULL)
  79. convert(root->pRight, tail);
  80. };
  81.  
  82. BTNode* treeToDList(BTNode *root)
  83. {
  84. if(root == NULL) return NULL;
  85. BTNode *tail = NULL;
  86. convert(root, &tail);
  87. BTNode *pHead = tail;
  88. while(pHead != NULL && pHead->pLeft != NULL)
  89. pHead = pHead->pLeft;
  90. return pHead;
  91. }
  92.  
  93. int main(){
  94. int TestTime = , k = ;
  95. while(k <= TestTime)
  96. {
  97. cout << "Test " << k++ << ":" << endl;
  98.  
  99. cout << "Create a tree: " << endl;
  100. BTNode *pRoot = createBinaryTree();
  101. printBinaryTree(pRoot);
  102. cout << endl;
  103.  
  104. DbList *DbListHead = treeToDList(pRoot); // pRoot translate to Double linked list.
  105.  
  106. printDbList(DbListHead);
  107. cout << endl;
  108.  
  109. releaseDbList(DbListHead);
  110. }
  111. return ;
  112. }

note: 按先序输入,0表示结束。
样例输入:

a. 10 6 4 0 0 8 0 0 14 12 0 0 16 00

b. 0 (生成空树)

c. 1

d. 2 1 0 0 3 0 0

28.字符串的全排列

Go: ( 3. 字符的排列组合 )

相关例题:八皇后问题(可扩展为 n 皇后问题)

题目:8 x 8国际象棋上,摆8 个皇后,求她们任两个不同行、不同列且不在同一对角线上的摆法个数。

  1. #include <stdio.h>
  2. int solutionNumber = 0;
  3.  
  4. void print(int data[], int length)
  5. {
  6. for(int i = 0; i < length; ++i)
  7. printf("(%d, %d) ", i+1, data[i]+1);
  8. printf("\n");
  9. }
  10. bool judge(int data[], int length)
  11. {
  12. for(int i = 0; i < length; ++i)
  13. {
  14. for(int j = i +1; j < length; ++j)
  15. {
  16. if((j - i) == (data[j] - data[i]) || (j - i) == data[i] - data[j])
  17. return false; // not the solution
  18. }
  19.  
  20. }
  21. return true;
  22. }
  23. void swap(int &a, int &b) // do not forget the reference.
  24. {
  25. int tem = a;
  26. a = b;
  27. b = tem;
  28. }
  29.  
  30. void permutation(int data[], int length, int begin)
  31. {
  32. if(begin == length-1)
  33. {
  34. if(judge(data, length))
  35. {
  36. // print(data, length);
  37. ++solutionNumber;
  38. }
  39. return;
  40. }
  41. for(int start = begin; start < length; ++start)
  42. {
  43. swap(data[start], data[begin]);
  44. permutation(data, length, begin+1);
  45. swap(data[start], data[begin]);
  46. }
  47. }
  48.  
  49. int main()
  50. {
  51. int columnIndex[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}; /* 不在同行同列 */
  52. permutation(columnIndex, 8, 0); /* 判断是否可以不在同一对角线 */
  53. printf("Number of Solution: %d\n", solutionNumber);
  54. return 0;
  55. }

Chap4: question: 19 - 28的更多相关文章

  1. ubuntu下设置jupyter notebook 2017年07月29日 19:28:34 小旋锋 阅读数:8329 标签: ubuntu 更多 个人分类: python 二三事 来源:http://blog.csdn.net/suzyu12345/article/details/51037905 Ipython Notebook现在已经改名为Ipython jupyter,是最知名最好用的

    ubuntu下设置jupyter notebook     来源:http://blog.csdn.net/suzyu12345/article/details/51037905 Ipython No ...

  2. 根据pid获得路径 2006-10-25 19:28

    这是编写kill process时用到的 BOOL GetProcessModule(DWORD dwPID, DWORD dwModuleID, LPMODULEENTRY32 lpMe32, DW ...

  3. JavaSE_ IO流 总目录(19~22)

    JavaSE学习总结第19天_IO流119.01 集合的特点和数据结构总结19.02 如何选择使用哪种集合19.03 集合常见功能和遍历方式总结19.04 异常的概述和分类19.05 JVM默认处理异 ...

  4. JavaSE学习总结第19天_IO流1

      19.01  集合的特点和数据结构总结 HashSet.HashMap.Hashtable判断元素唯一性的方式: 通过对象的hashCode和equals方法来完成元素唯一性 如果对象的hashC ...

  5. 1Z0-050

    QUESTION 13 View the Exhibit.Examine the following command that is executed for the TRANSPORT table ...

  6. A.Kaw矩阵代数初步学习笔记 5. System of Equations

    “矩阵代数初步”(Introduction to MATRIX ALGEBRA)课程由Prof. A.K.Kaw(University of South Florida)设计并讲授. PDF格式学习笔 ...

  7. .NET运用AJAX 总结及其实例

    1.AJAX简介 (1.没有AJAX会怎么样?普通的ASP.Net每次执行服务端方法的时候都要刷新当前页面,比如实现显示服务器的时间.每次都要刷新页面的坏处:页面刷新打断用户操作.速度慢.增加服务器的 ...

  8. 转:switch内部的变量定义问题(goto类似)

    自我总结:(之前查过goto和switch的资料但是一直没有搞懂,直到今天看到这个讨论才懂了) 1   int a;    是个描述,而不是个命令,只是说明我需要空间,编译器会保证在相应的作用域之中这 ...

  9. HTML+CSS+JAVASCRIPT 总结

    1. HTML 1: <!doctype html> 2: <!-- This is a test html for html, css, javascript --> 3: ...

随机推荐

  1. hdu 4642 Fliping game

    http://acm.hdu.edu.cn/showproblem.php?pid=4642 对于给定的矩阵 操作步数的奇偶性是确定的 奇数步Alice赢 否则Bob赢 从左上角向右下角遍历遇到1就进 ...

  2. 【58测试】【贪心】【离散】【搜索】【LIS】【dp】

    第一题 大天使之剑 大意: 有n个怪,每个怪的ph 为 h[i],有三种攻击方式,普通攻击:一次打一个怪一滴血:重击(消耗1魔法值):一次打一个怪两滴血:群体攻击(消耗1魔法值):一次打所有怪一滴血. ...

  3. IIS+PHP配置一次成功无错误版

    1.首先去PHP官网下载php的压缩包(.zip),由于web服务器是IIS所以尽量使用线程不安全版本的,我下载的是: VC11 x86 Non Thread Safe (2015-May-14 18 ...

  4. SAP 增强-出口选找方法-全部

    ■ SAP 中如何寻找增强 方法一:利用TCODE寻找增强(第二代的增强) 执行一个程序(源代码后附),在选择屏幕处输入你所需要增强的程序TCODE,执行後,就会出现一个列表,那里就有关于如何增强这个 ...

  5. Term_Application

    1 CRM(Customer Relationship Management)客户关系管理: (对ERP下游管理不足的补充) 是一个获取.保持和增加可获利客户的方法和过程. 市场营销.销售管理.客户关 ...

  6. Mongodb在NUMA机器上的优化

    10gen在mongodb的部署指南上,提到了在NUMA机器上,mongodb可能会出现问题,参见:http://docs.mongodb.org/manual/administration/prod ...

  7. Filco minila 的蛋疼。

    3494左shift坏了,期间邮寄厂家维修,就把尘封多年的minila拿出来用着. 最为人诟病的问题:蓝亚适配,与mac跟iphone都能快速的匹配连接上.但是对于我的dell vestro 2012 ...

  8. cocos2d项目 打包apk 项目名称相关设置

    修改android项目名称(打包生成的默认apk名称),直接找到proj.android目录下.project文件夹里面比较靠前的xml配置,修改<name>项目名称</name&g ...

  9. 用javaScript实现 登陆记住密码功能。

    一.先写一个存取 cookie的方法. function getCookie(cookiename) { var result; var mycookie = document.cookie; var ...

  10. 设置Android studio黑色主题

    设置: 如上图,点击[Theme]下拉选项,选中[Darcula]主题,点击[Apply]应用修改,弹出重启Android Studio生效修改.如图: