路过的大神,看见的帮帮小弟了 !
一、算法分析题(本大题共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)大、中、小车各运多少趟? --------------------编程问答-------------------- 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发现小车最新最接近最后一次,故是小车。 --------------------编程问答-------------------- 1:这个不是高中题吗,设max课,点三堂、2、1、不点的概率加起来不就是了 --------------------编程问答-------------------- 加起来要>=0.9 --------------------编程问答-------------------- 第一题#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;
}
}
--------------------编程问答-------------------- 第二题#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;}
补充:云计算 , 云安全