计算麻将向听数程序写挂求调
查看原帖
计算麻将向听数程序写挂求调
866613
sansesantongshun楼主2024/2/22 20:23
#include<bits/stdc++.h>
using namespace std;
int x,a[35],b[35][5][2][3][3],y;
int main()
{
	memset(b,127,sizeof(b));
	for (int i=1;i<=14;++i)
	{
		scanf("%d",&x);
		++a[x-x/10-1];
	}
	b[0][0][0][0][0]=0;
	for (int i=0;i<34;++i)
	for (int j=0;j<=4;++j)
	for (int k=0;k<=1;++k)
	for (int l=0;l<=2 && j+l<=4;++l)
	{
		for (int o=0;o<=2 && j+l+o<=4;++o)
		{
			if (b[i][j][k][l][o]<=8)
			for (int p=l+o;p<=4;++p)
			{
				x=b[i][j][k][l][o]+max(0,p-a[i+1]);
				y=p-l-o;
				if (y>=3 && j+l<4)
				b[i+1][j+l+1][k][o][y-3]=min(b[i+1][j+l+1][k][o][y-3],x);
				if (y>=2 && k==0)
				b[i+1][j+l][1][o][y-2]=min(b[i+1][j+l][k+1][o][y-2],x);
				if (y<=2)
				b[i+1][j+l][k][o][y]=min(b[i+1][j+l][k][o][y],x);
			}
			if (i>=27 || i%9==0)
			break;
		}
		if (i>=27 || i%9==0)
		break;
	}
	cout<<b[34][4][1][0][0];
}
2024/2/22 20:23
加载中...