路过的大神,看见的帮帮小弟了 !

mikelearner25 2012-12-24 07:44:57
一、算法分析题(本大题共3小题,选做2题,每小题40分,共80分)
1. 逃学威龙
John无心向学,总是打逃课的主意,他确信他的期末考试绝对能够考过,但是老师可不相信他,因此老师定下了一条规矩,最后的期末成绩将由平时成绩和考试成绩组成,各占50%的分数,也就是满分100分,其中平时成绩50分,考试成绩50分。而老师为了不让同学们逃课,平时成绩将仅由出勤情况确定,每点名到一次逃课就要扣掉10分的平时成绩。
John很不满于老师这套想法,决心要将翘课进行到底,他有足够的信心和实力在期末考中得到满分,剩下的就只看平时成绩了,只要他在平时成绩中保留的分数>=10分,他这个学期就可以合格。他甚至为此充分调查了老师的点名习惯,发现如下规律:
每个学期这门课程共有K个课时(K<=20),而对于某节课老师点不点名是一个独立的事件,并且老师在某一节课点名的概率是p(0.0<=p<=1.0),现在fish_ball想尽可能多的逃课,但是要保证他有90%以上的概率不挂掉这门课,问fish_ball这个学期最多能翘掉多少课?

输入规格:
第一行是一个整数C,C<=20,紧接着C组数据,每组数据包含一行,依次给出整数K (1<=K<=20)和p(0.0<=p<=1.0),如题目中所描述。

输出规格:
对于每组数据,输出一个整数,表示John这学期最多能够翘掉几堂课。

2. 赶公交
Alfred在大学新区上学,他每个星期都要到市区学琴,因此要在每个星期六的10点钟之前赶到琴行上课,从郑大坐68路车到琴行要花整整一个小时,而68路车是每半小时一趟,整点和30分的时候会发一趟车。
这一次,Alfred起床晚了,一看表已经8点多了,匆忙收拾了一下之后,Alfred马上冲向公交站,但是,由于路况不佳,在前面的一段路上满是泥泞。路况如下:

如左图,A(xA,yA)是Alfred现在所处的位置,B(xB,yB)是公交站(Bus-stop)的位置,其中y>0的区域是泥泞的地面,Alfred在泥泞的地面上的移动速度是v1(米/秒),而y<0的区域是水泥地,Alfred在水泥地上的移动速度只有v2(米/秒),其中v1<=v2,A在第二象限,B在第四象限。
Alfred是一个物工院的学生,他稍微估算了一下,剩下的时间已经不多了,他看看表,现在离9点整只剩下T秒了 (T由题目给出),Alfred想知道,他如果用最优的策略赶往公交站,今天的课是否会迟到。
输入规格:
第一行是一个整数C,C<=10,紧接着C组数据,每组数据依次给出xA,yA,xB,yB,v1,v2 和T,他们的意义如上文所述,x,y坐标的单位是米,所有坐标的绝对值<109,T是一个整数。
输出规格:
对于每组数据,输出YES或NO,表示Alfred会不会迟到。

3. 货物1000吨,3辆车同时起运,大车装5吨,来回一趟2小时,中车装3吨,来回一趟1.8小时(十进制),小车装2吨,来回一趟1.6小时(十进制),并规定:若有多辆车同时到达,装车的优先次序是:大车≥中车≥小车。不记装车时间。问:(1)最后一趟车是那种车?(2)大、中、小车各运多少趟?
...全文
528 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
依荷 2013-06-08
  • 打赏
  • 举报
回复
第二题#include<iostream> #include<cstdlib> #include<ctime> #include<cmath> using namespace std; class zuobiao//基坐标 {protected :double x,y; public:virtual void run()=0; virtual void print()=0; double getX(); double getY(); }; class A:public zuobiao//A坐标 {public:A(){run();} void run(); void print(); }; class B:public zuobiao//B坐标 {public:B(){run();}void run();void print(); }; class Alfred//人物 {public:Alfred(){setSpeed();} void setSpeed();void calc();void print(); private:A a;B b;double v1,v2;double t; }; double zuobiao::getX(){return x;} double zuobiao::getY(){return y;} void A::run(){x=0-rand()%109;y=rand()%109;} void B::run(){x=rand()%109;y=0-rand()%109;} void A::print(){cout<<"坐标A:("<<x<<","<<y<<") ";} void B::print(){cout<<"坐标B:("<<x<<","<<y<<") ";} void Alfred::setSpeed() {double a,b; while(1) {a=rand()%6;b=rand()%6; if(b>=a&&a>0) {v2=b;v1=a;break;}} } void Alfred::print() {cout<<"v1="<<v1<<",v2="<<v2;t=rand()%150;cout<<" T="<<t<<endl; } void Alfred::calc() {double i;double k;//横坐标距离 k=b.getX()-a.getX();a.print();b.print();print(); for(i=0;i<=k;i++) {if((sqrt(a.getY()*a.getY()+i*i)/v1+sqrt(b.getY()*b.getY()+(k-i)*(k-i))/v2)<=t){cout<<"YSE"<<endl;return;}} cout<<"NO"<<endl; } int main() {int c,i; srand((unsigned)time(NULL)); Alfred a[10];cout<<"请输入C:";cin>>c;cout<<endl; for(i=0;i<c;i++) {a[i].calc();}return 0;}
依荷 2013-06-08
  • 打赏
  • 举报
回复
第一题#include "iostream.h" struct KE { int K; float p; }; void main() { int C; cout<<"请输入有多少组数据:"<<endl; cin>>C; KE *ke=new KE[C]; for(int i=0;i<C;i++) { cout<<"请输入第"<<i+1<<"组数据的课时数:"; cin>>ke[i].K; cout<<"请输入第"<<i+1<<"组数据的课点名概率:"; cin>>ke[i].p; } for(i=0;i<C;i++) { cout<<"第"<<i+1<<"组数据最多能翘"<<ke[i].K*(1-ke[i].p)<<"节课"<<endl; } }
tobleron 2013-01-08
  • 打赏
  • 举报
回复
3:再次同一起跑线,运输次数比为8:9:10;装货物8*5+9*3+10*2=87;1000%87=43;(43/87*8)%1比较(43/87*9)%1比较(43/87*10)%1发现小车最新最接近最后一次,故是小车。
tobleron 2013-01-08
  • 打赏
  • 举报
回复
加起来要>=0.9
tobleron 2013-01-08
  • 打赏
  • 举报
回复
1:这个不是高中题吗,设max课,点三堂、2、1、不点的概率加起来不就是了

4,451

社区成员

发帖
与我相关
我的任务
社区描述
云计算 云安全相关讨论
社区管理员
  • 云安全社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧