今天上网刚刚写的,代码有点粗糙,vc6下编译通过。
希望对将来的工作有所帮助。
希望对将来的工作有所帮助。
- #include <stdio.h>
- int bitmap[10][10]={
- 0,0,0,0,0,0,0,0,0,0,
- 0,0,0,1,1,1,1,1,0,0,
- 0,1,1,1,1,1,1,1,0,0,
- 0,1,1,1,1,1,1,1,1,0,
- 0,1,1,1,1,1,1,1,1,0,
- 0,1,1,1,1,1,1,1,1,0,
- 0,0,0,1,1,1,1,1,1,0,
- 0,0,0,1,1,1,1,1,0,0,
- 0,1,1,1,1,1,1,0,0,0,
- 0,1,1,0,1,1,0,0,0,0
- };
- int mask1[3][3]={
- 7,5,7,
- 5,-1,0,
- 0,0,0
- };
- int mask2[3][3]={
- 0,0,0,
- 0,-1,5,
- 7,5,7
- };
- void printBitmap()
- {
- for (int i=0;i<10;i++)
- {
- for (int j=0;j<10;j++)
- {
- printf("%d",bitmap[i][j]);
- }
- printf("/n");
- }
- }
- int main()
- {
- int g=0;
- for (int i=1;i<9;i++)
- {
- for (int j=0;j<9;j++)
- {
- if (bitmap[i][j]==0)
- {
- continue;
- }
- g=99;
- int t=0;
- for (int ii=0;ii<3;ii++)
- {
- for (int jj=0;jj<3;jj++)
- {
- if (mask1[ii][jj]<0) break;
- if (mask1[ii][jj]==0) continue;
- t=bitmap[i-1+ii][j-1+jj]+mask1[ii][jj];
- if (t<g) g=t;
- }
- if (mask1[ii][jj]<0) break;
- }
- bitmap[i][j]=g;
- }
- }
- for (i=8;i>0;i--)
- {
- for(int j=8;j>0;j--)
- {
- if (bitmap[i][j]==0) continue;
- g=99;
- int t=0;
- for (int ii=2;ii>=0;ii--)
- {
- for (int jj=2;jj>=0;jj--)
- {
- if (mask2[ii][jj]<0) break;
- if (mask2[ii][jj]==0) continue;
- t=bitmap[i-1+ii][j-1+jj]+mask2[ii][jj];
- if(t<g) g=t;
- }
- if (mask2[ii][jj]<0) break;
- }
- if (bitmap[i][j]>g) bitmap[i][j]=g;
- }
- }
- for (i=0;i<10;i++)
- {
- for (int j=0;j<10;j++)
- {
- bitmap[i][j] /=5;
- }
- }
- printBitmap();
- return 0;
- }