2012年(12)
分类: C/C++
2012-05-24 21:57:00
求n使得1/2 1/3 ... 1/n>=x.
点击(此处)折叠或打开
求12个浮点数的平均值.
点击(此处)折叠或打开
题意: 如图,一个海岸线从原点开始以半圆形扩展,每年50平方英里的速度.给你一个点(x,y),求出覆盖到该点的时间.思路:引用下学长: 求出经过点(x,y)的半圆形的面积,除以50然后向上取整就是最终结果.不过此题的数据不是特别强,所以对结果向下取整再加1也对.是否可以理解为:向上取整不一定等于向下取整加1?
点击(此处)折叠或打开
- #include <stdio.h>
- #include <math.h>
- #define PI 3.1416
- float area (float x,float y);
- int main ()
- {
- int ans,T,n=1;
- float x,y;
- scanf("%d",&T);
- while (n<=T)
- {
- scanf("%f%f",&x,&y);
- ans=ceil(area(x,y)/50);
- printf("Property %d: This property will begin eroding in year %d.\n",n,ans);
- n++;
- }
- printf("END OF OUTPUT.");
- return 1;
- }
- float area (float x,float y)
- {
- float r2,s;
- r2=x*x+y*y;
- s=PI*r2/2;
- return s;
- }
题意: 给出m个长度都为n的DNA字符串,按照每个字符串的逆序数从小到大排序(如果逆序数相同则按照给出的顺序输出).
思路:引用学长:这一题主要是考察稳定排序(排序后关键字相同的元素按照原来的顺序排列).可以直接使用比较简单的冒泡排序,选择排序,也可以使用效率较高的快速排序(C语言库函数中的qsort()).但是qsort()是不稳定的排序,可以通过增加一个下标使之成为稳定排序.
程序中使用了冒泡排序
点击(此处)折叠或打开
- #include <stdio.h>
- #include <stdlib.h>
- struct DNA
- {
- char s[50];
- int sorted;
- }dna[100],ls;
- int main ()
- {
- int temp,i,j,m,n;
- scanf("%d%d",&n,&m);
- getchar();
- for (temp=0;temp<m;temp++)
- {
- dna[temp].sorted=0;
- gets(dna[temp].s);
- for (i=0;i<n-1;i++)
- for (j=i+1;j<n;j++)
- if (dna[temp].s[i]>dna[temp].s[j])
- dna[temp].sorted++;
- }
- for (i=0;i<m-1;i++)
- for (j=0;j<m-i-1;j++)
- if(dna[j].sorted>dna[j+1].sorted)
- {
- ls=dna[j];
- dna[j]=dna[j+1];
- dna[j+1]=ls;
- }
- for (temp=0;temp<m;temp++)
- {
- puts(dna[temp].s);
- }
- return 1;
- }