Source Code
| Problem: 3125 | User: newer2015 | |
| Memory: 740K | Time: 16MS | |
| Language: G++ | Result: Accepted |
- Source Code
#include<iostream> #include<stdio.h> #include<math.h> #include<algorithm> #include<queue> #define MAX 1000 using namespace std; class point { public: int key; int priority; point(){key=0;priority=0;} }; point* p=new point[MAX]; int num; int imkey; int test() { int temp=-1; int k=0; int i=0,count=1; int maxp=0; int max_priority[MAX]; point temppoint; queue<point> q; cin>>num>>imkey; for(i=0;i<num;i++) { p[i].key=i; cin>>p[i].priority; max_priority[i]=p[i].priority; // printf("%d\n",max_priority[i]); q.push(p[i]); } //printf("%d\n",max_priority); sort(max_priority,max_priority+num); k=num-1; maxp=max_priority[k]; // printf("%d\n",maxp); for(;;) { if(q.front().priority<maxp) { temppoint=q.front(); //printf("%d",temppoint.key); q.pop(); q.push(temppoint); } else { if(q.front().key==imkey) { printf("%d\n",count); break; } else { q.pop(); k=k-1; maxp=max_priority[k]; count++; } } } } int main() { int i; cin>>i; while(i!=0) { test(); i--; } return 0; } 打印机这个题还比较简单,逐渐掌握了poj算法实现的基本思路方法,对于算法细节的分析直接决定了answer的正确与否,此道题特殊注意一下优先级,最大优先级出队以后应该改变最大优先级的值,因此需要引入一个排序好的优先级数组。
本文详细介绍了如何解决POJ算法实现问题,特别关注优先级处理,通过引入排序优先级数组来优化算法效率。逐步掌握了算法实现的核心思路,并在实际应用中实现了正确的解答。
1879

被折叠的 条评论
为什么被折叠?



