http://acm.hdu.edu.cn/showproblem.php?pid=4218
恩。。。这题当时比赛的时候题意弄得稀里糊涂,不过赛后好好研究一下还是把题意弄得差不多了,其实这题没是用什么算法,只是简单的判断距离。不过这题
在输出时的空格上不符合常理的降低了难度,允许输出后面的空格,刚开始不知道就PE了N次,不过最后多次改动之后终于过了。代码如下:
#include"stdio.h" #include"string.h" int main( ) { int t,r,i,j,min,count=1; int a[50][50],num[50]; scanf("%d",&t); while(t--) { min=50; memset(a,0,sizeof(a)); scanf("%d",&r); for(i=0;i<=2*r;i++) for(j=0;j<=2*r;j++) if((i-r)*(i-r)+(j-r)*(j-r)-r*r<=3&&(i-r)*(i-r)+(j-r)*(j-r)-r*r>=-3) { a[i][j]=1; if(j<min) min=j; } printf("Case %d:\n",count++); for(i=0;i<=2*r;i++) { for(j=0;j<=2*r;j++) { if(a[i][j]==1) printf("*"); else printf(" "); } printf("\n"); } } return 0; }