题目链接
题意:
判断圆、等腰三角形、正方形有多少个交点。
n个数,1代表圆,2代表高和底边相等的三角形,3代表正方形,把这n个图形放到平面直角坐标系中,第i+1个图形一定在第i个图形里面,圆要取能画的最大半径,三角形要取最大的高(并且底边与x轴平行,顶点在底边上面),正方形要取最大边长(并且每条边和坐标轴平行),求交点的个数(可能是无限个,如果是无限个则直接输出Infinite,否则输出Finite及交点个数)
★★★★★★★★注意考虑一种情况:(箭头所指的点计算了两次)
代码:
#include<stdio.h>
int a[1005];
int main()
{
int n;
scanf("%d",&n);
int i;
int ans=0,flag=0;
for(i=1; i<=n; i++)
{
scanf("%d",&a[i]);
}
for(i=2; i<=n; i++)
{
if(a[i]==1)
{
if(a[i-1]==2)
ans=ans+3;
if(a[i-1]==3)
ans=ans+4;
}
if(a[i]==2)
{
if(a[i-1]==1)
ans=ans+3;
if(a[i-1]==3)
{
flag=1;
break;
}
}
if(a[i]==3)
{
if(a[i-1]==1)
ans=ans+4;
if(a[i-1]==2)
{
flag=1;
break;
}
}
//↓↓↓↓↓★★★★★★★★★★
if(i>=3)
{
if(a[i-2]==3&&a[i-1]==1&&a[i]==2)
ans--;
}
}
if(flag==1)
printf("Infinite\n");
else
{
printf("Finite\n");
printf("%d\n",ans);
}
}