概述
//杭电ACM敌兵布阵问题 //用链表的方法实现 //链表使用数组实现的 #ifndef LIST_H_ #define LIST_H_ const int MAX_LIST=5000; typedef int ListType; class List { public: List(); bool isEmpty()const; int getLength()const; void insert(int index,ListType newItem); void show()const; void Add(int i,int j); void Sub(int i,int j); void Query(int i,int j);//i<j void End()const; private: ListType items[MAX_LIST]; int size; int translate(int ine) const; }; #endif
#include"2.h" #include<iostream> List::List():size(0) {} bool List::isEmpty()const { return size==0; } int List::getLength()const { return size; } void List::insert(int index,ListType newItem) { for(int i=size;i>=index;i--) items[translate(i+1)]=items[translate(i)]; items[translate(index)]=newItem; ++size; } int List::translate(int ine) const { return ine-1; } void List::show()const { using std::cout; for(int i=0;i<size;i++) cout<<items[i]<<' '; } void List::Add(int i,int j)//i和j为正整数,表示第i个营地增加j个人(j不超过30) { items[translate(i)]=items[translate(i)]+j; } void List::Sub(int i,int j)//i和j为正整数,表示第i个营地减少j个人(j不超过30) { items[translate(i)]=items[translate(i)]-j; } void List::Query(int i,int j)//i和j为正整数,i<=j,表示询问第i到第j个营地的总人数 { using std::cout; int sum=0; for(int m=translate(i);m<=translate(j);m++) sum=sum+items[m]; cout<<sum<<std::endl; } void List::End()const { std::cout<<"End"<<std::endl; }
#include"2.h" #include<iostream> int main() { using namespace std; List list; int count=0; int people=0; cout<<"输入营地的个数: "; cin>>count; cout<<endl<<"输入各个营地的初始人数 "; for(int i=0;i<count;i++) { cin>>people; list.insert(i+1,people); } list.Query(1,3); list.Add(3,6); list.Query(2,7); list.Sub(10,2); list.Add(6,3); list.Query(3,10); list.End(); return 0; }
最后
以上就是娇气店员为你收集整理的杭电ACM1166的全部内容,希望文章能够帮你解决杭电ACM1166所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复