/*矩形面積交
問題描述 平面上有兩個矩形,它們的邊平行于直角坐標系的X軸或Y軸。對于每個矩形,我們給出它的一對相對頂點的坐標,請你編程算出兩個矩形的交的面積。
輸入格式 輸入僅包含兩行,每行描述一個矩形?! ≡诿啃兄校o出矩形的一對相對頂點的坐標,每個點的坐標都用兩個絕對值不超過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;?
}?
二、/*數字三角形
問題描述 ?。▓D3.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;
}