题意:让你一串数,只能是1,2,3,1是圆,2是正三角形,3是正方形,让你判断有多少个交点;
思路:3个数字,6种排列方式,列出来看看;
注意:存在一种特殊情况,3 1 2,其中有一点重合,ans–;
感觉可惜了,看不懂题目,翻译过来的没看仔细,以为只是判断是否有重合的边,没有想到特殊情况。
#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <queue>
using namespace std;
const int MAX=1e3+7;
int a[MAX];
int main()
{
int i,n,m,j,k,l=1,flag=0,ans=0;
scanf("%d",&n);
for(i=0;i<=n-1;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<=n-2;i++)
{
if(a[i]+a[i+1]==3)
ans=ans+3;
else if(a[i]+a[i+1]==4)
ans=ans+4;
else
{flag=1;break;}
if(i+2<=n-1&&a[i]==3&&a[i+1]==1&&a[i+2]==2)
ans--;
//printf("%d\n",ans);
}
//printf("%d %d %d\n",a[0],a[1],a[2]);
if(flag)
printf("Infinite\n");
else
{
printf("Finite\n%d\n",ans);
}
}