uva10118

sshwy

2018-04-13 13:17:51

Personal

```cpp #include<iostream> //#define max(x1,x2) (x1>x2?x1:x2) //#define t(w,x,y,z) (n*4-w-x-y-z-f[w][x][y][z]) using namespace std; int n,a[45],b[45],c[45],d[45],mx; int f[45][45][45][45]; int t(int w,int x,int y,int z){ return (n*4-w-x-y-z-f[w][x][y][z]); } int main(){ while(cin>>n){ if(!n)return 0; for(int i=n;i>=1;i--)cin>>a[i]>>b[i]>>c[i]>>d[i]; mx=0; a[n+1]=-2,b[n+1]=-3,c[n+1]=-4,d[n+1]=-5; for(int i=n;i>=0;i--){ for(int j=n;j>=0;j--){ for(int k=n;k>=0;k--){ for(int l=n;l>=0;l--){ f[i][j][k][l]=0; if(a[i+1]==b[j+1]&&t(i+1,j+1,k,l)<=3)f[i][j][k][l]=max(f[i][j][k][l],f[i+1][j+1][k][l]+2); if(a[i+1]==c[k+1]&&t(i+1,j,k+1,l)<=3)f[i][j][k][l]=max(f[i][j][k][l],f[i+1][j][k+1][l]+2); if(a[i+1]==d[l+1]&&t(i+1,j,k,l+1)<=3)f[i][j][k][l]=max(f[i][j][k][l],f[i+1][j][k][l+1]+2); if(b[j+1]==c[k+1]&&t(i,j+1,k+1,l)<=3)f[i][j][k][l]=max(f[i][j][k][l],f[i][j+1][k+1][l]+2); if(b[j+1]==d[l+1]&&t(i,j+1,k,l+1)<=3)f[i][j][k][l]=max(f[i][j][k][l],f[i][j+1][k][l+1]+2); if(c[k+1]==d[l+1]&&t(i,j,k+1,l+1)<=3)f[i][j][k][l]=max(f[i][j][k][l],f[i][j][k+1][l+1]+2); if(f[i][j][k][l]>mx)mx=f[i][j][k][l]; } } } } cout<<mx<<endl; } return 0; } ``````cpp #include<iostream> using namespace std; int n,c[5][50]; int t[45][45][45[45],g[45][45][45][45]; int main(){ while(cin>>n){ if(!n)return 0; for(int i=n;i>=1;i--){ for(int j=1;j<=4;j++)cin>>c[j][i]; } t[n][n][n][n]=g[n][n][n][n]=0; for(int i1=n;i1>=1;i1--){ for(int i2=n;i2>=1;i2--){ for(int i3=n;i3>=1;i3--){ for(int i4=n;i4>=1;i4--){ /*t[i1][i2][i3][i4] g[i1][i2][i3][i4] c[1][i1] c[2][i2] c[3][i3] c[4][i4]*/ } } } } } return 0; } ```