C++的问题
C++算法的问题
C++的问题 见图片
C++算法的问题
C++算法的问题
3条回答 默认 最新
- soar3033 2021-08-08 20:30关注
// ConsoleApplication13.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // #include <iostream> #include <malloc.h> using namespace std; int main() { int n = 0, m = 0; int min = 1; int count = 0; int loc,len,flag,flag2; cin >> n; cin >> m; int* l =new int[n]; int* r = new int[n]; int* pos = new int[n+2]; for (int i = 0; i < n+2; i++) { *(pos+i) = 0; } for (int i = 0; i < n; i++) { cin >> *(l+i); cin >> *(r+i); for (int j = *(l+i); j <= *(r+i); j++) { *(pos+j) = 1; } } *(pos+0) = 1; *(pos+n + 1) = 1; while (true) { flag = 1; flag2 = 1; len = 0; loc = 0; for (int i = 0; i < n; i++) { if (*(pos+*(l+i)-1) == 0 && *(pos+*(r+i)+1) == 0) { l[i]--; r[i]++; pos[l[i]] = 1; pos[r[i]] = 1; count++; flag = 0; flag2 = 0; break; } else if (*(pos + *(l + i) - 1) == 0 || *(pos + *(r + i) + 1) == 0) { if (*(r+i)-*(l+i)>len) { loc = i; len = *(r+i) - *(l+i); } flag2 = 0; } } if (flag) { (*(l+loc))--; (*(r+loc))++; count++; *(pos+*(l+loc)) = 1; *(pos+*(r+loc)) = 1; } if (flag2) { break; } } cout << count; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决评论 打赏 举报无用 4