poj 2083 poj3768 画图搜索

来源:互联网 发布:山东招宝万金网络 编辑:程序博客网 时间:2024/06/01 11:03

下面是poj2083  discuss里面的精简代码

#include"stdio.h"#include"math.h"main(){int i,j,n,ii,jj,k;while(scanf("%d",&n)&&n--!=-1){for(i=0;i<pow(3,n);i++,printf("\n"))for(j=0;j<pow(3,n);j++){for(ii=i,jj=j,k=0;k<n&&(ii%3+jj%3)%2==0;ii/=3,jj/=3,k++);printf("%c",32+56*(k==n));}printf("-\n");}}

poj2083 

递归代码就需要自己处理图中的数据关系,并且一步一步递归走下去,从大范围开始
注意    \0   和  \n   的区别

#include<stdio.h>#include<math.h>#include<string.h>char a[1000][1000];void deal(int n,int size,int x,int y){    if(n==1){        a[x][y]='X';        return ;    }    size/=3;    deal(n-1,size,x,y);    deal(n-1,size,x+size,y+size);    deal(n-1,size,x,y+2*size);    deal(n-1,size,x+2*size,y);    deal(n-1,size,x+2*size,y+2*size);}int main(){    int n;    while(scanf("%d",&n),n!=-1){        int power=pow((double)3,(double)(n-1));        for(int i=0;i<=power;i++){            for(int j=0;j<=power;j++)                a[i][j]=' ';                a[i][power+1]='\0';        }        deal(n,power,1,1);        for(int i=1;i<=power;i++)            printf("%s\n",a[i]+1);        puts("-");    }    return 0;}


poj3768

#include<stdio.h>#include<string.h>#include<math.h>char ans[3005][3005];char a[10][10];char tag;int n,temp;void deal(int ps,int size,int x,int y){    if(ps==1){        for(int i=0;i<n;i++)            for(int j=0;j<n;j++)                ans[x+i][y+j]=a[i][j];        return ;    }    size/=n;    for(int i=0;i<n;i++)        for(int j=0;j<n;j++)            if(a[i][j]!=' ')                deal(ps-1,size,i*size+x,j*size+y);}int main(){    while(scanf("%d",&n),n)    {        getchar();//************重要        char t[10];        for(int i=0;i<n;i++){//-------------不可以用printf输入有空格的字符串-----------//            gets(t);            for(int j=0;j<n;j++)                a[i][j]=t[j];        }        scanf("%d",&temp);        memset(ans,' ',sizeof(ans));//*************重要        int power=pow((double)(n),(double)(temp));//----------------基本上初始化所有数据-------------------//        deal(temp,power,0,0);        for(int i=0;i<power;i++)            ans[i][power]='\0';        for(int i=0;i<power;i++)            puts(ans[i]);    }    return 0;}



0 0
原创粉丝点击