蓝杯十八

/*矩形面积交

问题描述  平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴。对于每个矩形,我们给出它的一对相对顶点的坐标,请你编程算出两个矩形的交的面积。

输入格式  输入仅包含两行,每行描述一个矩形。  在每行中,给出矩形的一对相对顶点的坐标,每个点的坐标都用两个绝对值不超过10^7的实数表示。

输出格式  输出仅包含一个实数,为交的面积,保留到小数后两位。

样例输入

1 1 3 3

2 2 4 4

样例输出1.00*/

/* 注意:一定要用double存储,即使最后精度不是double,中间过程中也可能出现需要double存储的数据,用float会造成精度损失,导致结果偏差,测试数据无法通过。*/

#include<stdio.h> 

#define max(x,y) ((x)>(y)?(x):(y)) 

#define min(x,y) ((x)<(y)?(x):(y))

int main(){     

double x1,y1,x2,y2;    //矩形1     

double x3,y3,x4,y4;    //矩形2     

double m1,n1;        //交集左上角坐标.     

double m2,n2;        //交集右下角坐标.     

scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2); 

scanf("%lf%lf%lf%lf",&x3,&y3,&x4,&y4);   

m1 = max(min(x1,x2),min(x3,x4));   

n1 = max(min(y1,y2),min(y3,y4));     

m2 = min(max(x1,x2),max(x3,x4));   

n2 = min(max(y1,y2),max(y3,y4));   

if(m2>m1 && n2>n1)         

printf("%.2f\n",(m2 - m1)*(n2 - n1));     

else         

printf("0.00\n");     

return 0; 


二、/*数字三角形

问题描述  (图3.1-1)示出了一个数字三角形。 请编一个程序计算从顶至底的某处的一条路  径,使该路径所经过的数字的总和最大。  每一步可沿左斜线向下或右斜线向下走;  1<三角形行数≤100;  三角形中的数字为整数0,1,…99;

输入格式  文件中首先读到的是三角形的行数。  接下来描述整个三角形

输出格式  最大总和(整数)

样例输入

5

7

3 8

8 1 0

2 7 4 4

4 5 2 6 5

样例输出30*/

#include<stdio.h>

int main(){   

int n;   

scanf("%d",&n);   

int m[n][n];   

for(int i=0;i<n;i++){           

for(int j=0;j<=i;j++){             

scanf("%d",&m[i][j]);       

}     

}     

for(int i=n-1;i>0;i--) {       

for(int j=0;j<i;j++){         

if(m[i][j]>m[i][j+1]){             

  m[i-1][j] += m[i][j];           

}

else{               

m[i-1][j] += m[i][j+1];           

}     

}

    }   

printf("%d",m[0][0]);   

return 0;

}

图片发自简书App

图片发自简书App

图片发自简书App

图片发自简书App
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容