一、最小长方形
题目描述:
给定一系列2维平面点的坐标(x, y),其中x和y均为整数,要求用一个最小的长方形框将所有点框在内。长方形框的边分别平行于x和y坐标轴,点落在边上也算是被框在内。
输入:
测试输入包含若干测试用例,每个测试用例由一系列坐标组成,每对坐标占一行,其中|x|和|y|小于 231;一对0 坐标标志着一个测试用例的结束。注意(0, 0)不作为任何一个测试用例里面的点。一个没有点的测试用例标志着整个输入的结束。
输出:
对每个测试用例,在1行内输出2对整数,其间用一个空格隔开。第1对整数是长方形框左下角的坐标,第2对整数是长方形框右上角的坐标。
样例输入:
12 56
23 56
13 10
0 0
12 34
0 0
0 0
样例输出:
12 10 23 56
12 34 12 34
答案:
#include using namespace std;
int main()
{
int x1,y1,x2,y2,x,y;
while(cin>>x>>y&&(x||y)){
x1=x2=x; y1=y2=y;
while(cin>>x>>y&&(x||y))
x1=x1x?x2:x,y2=y2>y?y2:y;cout<}return 0;
}
AC通过了
另
#includeusing namespace std;
int Max(int a[],int f)
{
int ma;
ma=a[0];
for(int i=1;i { if(a[i]>ma) ma=a[i];
}
return ma;
}
int Min(int a[],int f)
{
int mi;
mi=a[0];
for(int i=1;i { if(a[i] } return mi;
}
int main()
{
int a1[461],a2[461],i,flag,m,n;
//a1[0]=1;
//flag=0;
while(cin>>m>>n&&(m||n))
{
a1[0]=m;a2[0]=n;
for(i=0;a1[i]!=0||a2[i]!=0;i++)
cin>>a1[i+1]>>a2[i+1];
flag=i;
cout<} return 0;
} 用数组做的 仅供参考
另:
#include int main()
{
int x,y,x_min,x_max,y_min,y_max;
while(1)
{
x_min=232;x_max=-232;
y_min=232;y_max=-232;
while (scanf("%d %d",&x,&y)&&(x!=0||y!=0))
{
if (x>x_max)
x_max=x;
if (x x_min=x; if (y>y_max)
y_max=y;
if (y y_min=y; }
if (x_min==232&&x_max==-232)
break;
printf("%d %d %d %d\\n",x_min,y_min,x_max,y_max);
}
return 0;
}
C语言
#include"stdio.h"
int main()
{
int x1,y1,x2,y2;
int x,y,flag;
while(1)
{
x1=231;y1=231;x2=-231;y2=-231;
while(1)
{
scanf("%d%d",&x,&y);
if(x==0&&y==0)
{flag++;
if(flag==2)return 1;
else {printf("%d %d %d %d\\n",x1,y1,x2,y2);break;}
}
else
{
flag=0;
x1=x1 y1=y1 x2=x2>x?x2:x; y2=y2>y?y2:y;
}
}
}
return 1;
}
已ac
#includeint main()
{
int x[300],y[300],i,xx,xd,yx,yd,k;
while(scanf("%d%d",&x[0],&y[0])!=EOF)
{if(x[0]==0&&y[0]==0)return 0;
else
{i=0;
do
{i++;
scanf("%d%d",&x[i],&y[i]);
}while(x[i]!=0||y[i]!=0);
k=i-1;
xx=x[0];xd=x[0];yx=y[0];yd=y[0];
for(i=0;i<=k;i++)
{if(xx>x[i])xx=x[i];
if(xdif(yx>y[i])yx=y[i];if(ydprintf("%d %d %d %d\\n",xx,yx,xd,yd);}}
return 0;
}
二、统计字符
题目描述:
统计一个给定字符串中指定的字符出现的次数。
输入:
测试输入包含若干测试用例,每个测试用例包含2行,第1行为一个长度不超过5的字符串,第2行为一个长度不超过80的字符串。注意这里的字符串包含空格,即空格也可能是要求被统计的字符之一。当读到'#'时输入结束,相应的结果不要输出。
输出:
对每个测试用例,统计第1行中字符串的每个字符在第2行字符串中出现的次数,按如下格式输出:
c0 n0
c1 n1
c2 n2
...
其中ci是第1行中第i个字符,ni是ci出现的次数。
样例输入:
I
THIS IS A TEST
i ng
this is a long test string
#
样例输出:
I 2
i 3
5
n 2
g 2
答案:
#include#includeusing namespace std;
int main()
{
string pa,line;
int i,j;
while(getline(cin,pa)&&pa!="#")
{
getline(cin,line);
int co[5]={0};
for(i=0;i { for(j=0;j co[j]+=j } for(i=0;i { cout< } }
return 0;
}
这个程序只对输入不同字母才有效
另:
#include#includeint main()
{
char a[6],b[201];
while(gets(a)&&a[0]!='#')
{
int m=strlen(a),n=0,sum;
gets(b);
n=strlen(b);
for(int i=0;i { sum=0;
for(int j=0;j if(a[i]==b[j]) sum++; printf("%c %d\\n",a[i],sum);
}
}
return 0;
} 这是我的 仅供参考
三、游船出租
题目描述:
现有公园游船租赁处请你编写一个租船管理系统。当游客租船时,管理员输入船号并按下S键,系统开始计时;当游客还船时,管理员输入船号并按下E键,系统结束计时。船号为不超过100的正整数。当管理员将0作为船号输入时,表示一天租船工作结束,系统应输出当天的游客租船次数和平均租船时间。
注意:由于线路偶尔会有故障,可能出现不完整的纪录,即只有租船没有还船,或者只有还船没有租船的纪录,系统应能自动忽略这种无效纪录。
输入:
测试输入包含若干测试用例,每个测试用例为一整天的租船纪录,格式为:
船号(1~100) 键值(S或E) 发生时间(小时:分钟)
每一天的纪录保证按时间递增的顺序给出。当读到船号为-1时,全部输入结束,相应的结果不要输出。
输出:
对每个测试用例输出1行,即当天的游客租船次数和平均租船时间(以分钟为单位的精确到个位的整数时间)。
样例输入:
1 S 08:10
2 S 08:35
1 E 10:00
2 E 13:16
0 S 17:00
0 S 17:00
3 E 08:10
1 S 08:20
2 S 09:00
1 E 09:20
0 E 17:00
-1
样例输出:
2 196
0 0
1 60
答案:
1.#include 2.#include 3.#include 4.#include