1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
| #include<bits/stdc++.h> using namespace std; int main() { int a[10]={1,1,3,1,1,1,1,1,1,1}; int b[10]={9,9,9,9,0,0,0,0,0,0}; int i,j; int ans[10]={0}; for(i=0;i<10;i++) { if(a[i]>=b[i]) ans[i]=a[i]-b[i]; else { a[i+1]--; a[i]=a[i]+10; ans[i]=a[i]-b[i]; } } for(i=9;i>=0;i--) printf("%d",ans[i]); } ```
## 枚举的思考方式 情况较多开 long long
## 地图类题目处理思路 一个利用特征值处理的方法 ```c++ #include<bits/stdc++.h> using namespace std; int dx[4]={-1,0,1,0}; int dy[4]={0,1,0,-1}; int fx,fy,cx,cy,ff=0,cf=0,t=0; bool flag[160005]; int main() { int i,j; char a[11][11]; for(i=0;i<10;i++) { for(j=0;j<10;j++) { scanf(" %c",&a[i][j]); if(a[i][j]=='F') { fx=i;fy=j; a[i][j]='.'; } if(a[i][j]=='C') { cx=i;cy=j;a[i][j]='.'; } } getchar(); } while(1) { if(cx==fx&&cy==fy) { printf("%d",t); return 0; } int index=fx+fy*10+cx*100+cy*1000+ff*10000+cf*40000; if(flag[index]) { printf("0"); return 0; } flag[index]=1; if(fx+dx[ff]>=0&&fx+dx[ff]<10&&fy+dy[ff]>=0&&fy+dy[ff]<10&&a[fx+dx[ff]][fy+dy[ff]]!='*') { fx=fx+dx[ff];fy=fy+dy[ff]; } else { ff=(ff+1)%4; } if(cx+dx[cf]>=0&&cx+dx[cf]<10&&cy+dy[cf]>=0&&cy+dy[cf]<10&&a[cx+dx[cf]][cy+dy[cf]]!='*') { cx=cx+dx[cf];cy=cy+dy[cf]; } else { cf=(cf+1)%4; } t++; } }
C++
|