Guest User

Untitled

a guest
May 27th, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.81 KB | None | 0 0
  1. #include <QtCore/QCoreApplication>
  2. #include <QList>
  3. #include <QLinkedList>
  4. #include <QtDebug>
  5. QList<int> l;
  6. int alg4( QList<int> list)
  7. {
  8. int max = 0;
  9. int mright = 0;
  10. foreach(int i, list) {
  11. mright = qMax(mright+i,0);
  12. max = qMax(max,mright);
  13. }
  14. return max;
  15. }
  16. int alg3(int left, int right)
  17. {
  18. if(left > right) return 0;
  19. if(left == right) return qMax(0,l.at(right));
  20.  
  21. int middle = (left+right)/2;
  22.  
  23. int lmidmax = 0;
  24. int sum = 0;
  25. for(int pos = left; pos <= middle;pos++) {
  26. sum += l.at(pos);
  27. lmidmax = qMax(lmidmax,sum);
  28. }
  29. int rmidmax = 0;
  30. sum = 0;
  31. for(int pos = middle + 1; pos <= right; pos++) {
  32. sum += l.at(pos);
  33. rmidmax = qMax(rmidmax,sum);
  34. }
  35. int leftmax = alg3(left,middle);
  36. int rightmax = alg3(middle+1,right);
  37.  
  38. return qMax(qMax(lmidmax+rmidmax,leftmax),rightmax);
  39.  
  40.  
  41. }
  42. int alg3(QList<int> list)
  43. {
  44. l = list;
  45. return alg3(0,list.size()-1);
  46. }
  47. int alg2a(QList<int> list)
  48. {
  49. int max = 0;
  50. for(int left = 0; left < list.size();left++) {
  51. int sum = 0;
  52. for(int right = left; right < list.size();right++) {
  53. //if(left < right) {
  54. sum += list.at(right);
  55. if(sum > max) max = sum;
  56. // }
  57. }
  58. }
  59. return max;
  60. }
  61. int alg2b(QList<int> list)
  62. {
  63. QVector<int> sums = list.toVector();
  64. for(int i = 1; i < sums.size(); i++) {
  65. sums[i] = sums[i-1] + sums[i];
  66. }
  67. int max = 0;
  68. for(int left = 0; left < list.size(); left++) {
  69. for(int right = left; right < list.size(); right++) {
  70. int sum = sums[right];
  71. if(left > 0) sum -= sums[left-1];
  72. if(sum > max) max = sum;
  73. }
  74. }
  75. return max;
  76.  
  77. }
  78. int alg1(QList<int> list)
  79. {
  80. int max = 0;
  81. for(int left = 0; left < list.size();left++) {
  82.  
  83. for(int right = left; right < list.size();right++) {
  84. int sum = 0;
  85. for(int k = left;k < right +1;k++) {
  86. sum += list.at(k);
  87. }
  88. if(sum > max) max = sum;
  89.  
  90. }
  91. }
  92. return max;
  93. }
  94.  
  95. int main(int argc, char *argv[])
  96. {
  97. QCoreApplication app(argc, argv);
  98. QList<QList<int> > bList;
  99. QList<int> a ;
  100. a << 1 << -1 << 10 << 1 << 2 << -10 << 4 << 6 << 7;
  101. bList << a;
  102. a.clear();
  103. a << 0 << 0 << 1 << -1 << 1 << -2;
  104. bList << a;
  105.  
  106. a.clear();
  107. a << 100 << -100 << 1 << 2;
  108. bList << a;
  109.  
  110. a.clear();
  111. a << -1<< -2 << -3;
  112. bList << a;
  113.  
  114. a.clear();
  115. a << 0 << 0 << 0<< 0 << 0;
  116. bList << a;
  117. foreach(QList<int> list, bList) {
  118. qDebug() << "ret1 = " << alg1(list);
  119. qDebug() << "ret2a = " << alg2a(list);
  120. qDebug() << "ret2b = " << alg2b(list);
  121. qDebug() << "ret3 = " << alg3(list);
  122. qDebug() << "ret4 = " << alg4(list);
  123. qDebug() << "\n";
  124. }
  125.  
  126.  
  127. return app.exec();
  128. }
Add Comment
Please, Sign In to add comment