求助PKUSCD2T3暴力

学术版

```cpp #include <bits/stdc++.h> using namespace std; #define ll long long ll n,m,i,j,x,y,l,r,q,w,ii,jj,b[3][10],wz=0,mz=0,qtt=0,qt=0,a[3][10],d[3][10]; char s[101]; bool pd(ll c[3][10]) { mz=0,qt=0,qtt=0; for(ll qwq=0;qwq<3;qwq++) { for(ll qaq=1;qaq<=9;qaq++) { a[qwq][qaq]=c[qwq][qaq]; } } for(ll qwq=0;qwq<3;qwq++) { for(ll qaq=1;qaq<=9;qaq++) { if(!a[qwq][qaq]) continue; if(a[qwq][qaq]>=3) { mz++; a[qwq][qaq]-=3; // puts("wz2"); } if(qaq<=7) { while(a[qwq][qaq]>0&&a[qwq][qaq+1]>0&&a[qwq][qaq+2]>0) { a[qwq][qaq]--; a[qwq][qaq+1]--; a[qwq][qaq+2]--; mz++; // puts("wz1"); } } if(a[qwq][qaq]>=2) { qt++; a[qwq][qaq]-=2; // puts("wz3"); } } } if(qt==1&&mz==4) return 1; for(ll qwq=0;qwq<3;qwq++) { for(ll qaq=1;qaq<=9;qaq++) { if(c[qwq][qaq]>=2) { qtt++; } } } if(qtt==7) return 1; return 0; } int main() { scanf("%s",s+1); wz=0; for(i=1;i<=16;i++) { if(s[i]=='m'||s[i]=='p') { wz++; continue; } b[wz][s[i]-48]++; } for(i=0;i<3;i++) { for(j=1;j<=9;j++) { if(b[i][j]!=4) { b[i][j]++; if(pd(b)) { cout<<0; return 0; } b[i][j]--; } } } for(i=0;i<3;i++) { for(j=1;j<=9;j++) { if(b[i][j]==4) { continue; } b[i][j]++; for(x=0;x<3;x++) { for(y=1;y<=9;y++) { if(!b[x][y]) { continue; } b[x][y]--; for(l=0;l<=i;l++) { for(r=1;r<=j;r++) { if(b[l][r]==4) { continue; } b[l][r]++; // printf("%lld %lld %lld %lld %lld %lld\n",i,j,x,y,l,r); /* if(i==1&&j==6&&x==0&&y==1&&l==1&&r==4) { for(q=0;q<3;q++) { for(w=1;w<=9;w++) { cout<<b[q][w]<<" "; } puts(""); } }*/ if(pd(b)) { cout<<1; return 0; } b[l][r]--; } } b[x][y]++; } } b[i][j]--; } } for(i=0;i<3;i++) { for(j=1;j<=9;j++) { if(b[i][j]==4) { continue; } b[i][j]++; for(x=0;x<3;x++) { for(y=1;y<=9;y++) { if(!b[x][y]) { continue; } b[x][y]--; for(l=0;l<3;l++) { for(r=1;r<=9;r++) { if(b[l][r]==4) { continue; } b[l][r]++; for(q=0;q<3;q++) { for(w=1;w<=9;w++) { if(!b[q][w]) { continue; } b[q][w]--; for(ii=0;ii<3;ii++) { for(jj=1;jj<=9;jj++) { if(b[ii][jj]==4) { continue; } b[ii][jj]++; if(pd(b)) { cout<<2; return 0; } b[ii][jj]--; } } b[q][w]++; } } b[l][r]--; } } b[x][y]++; } } b[i][j]--; } } /* for(q=0;q<3;q++) { for(w=1;w<=9;w++) { cout<<b[q][w]<<" "; } puts(""); }*/ cout<<3; return 0; } ```
by _998344353_ @ 2022-05-22 17:16:55


过了Subtask1,2,过不去3
by _998344353_ @ 2022-05-22 17:17:23


建议模块,这代码可读性
by ppip @ 2022-05-22 17:40:18


借楼问题面在哪能看到
by Etinorally @ 2022-05-22 17:55:27


@[bye_wjx](/user/575994) 看不到
by ppip @ 2022-05-22 23:34:07


|