⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1002~1.cpp

📁 ACM1000_1010竞赛的赛题,源码
💻 CPP
字号:

//126454 2003-04-17 22:00:51 Accepted 1575 C++ 00:00.15 384K just for play 
#include<stdio.h>

struct point{double x;double y;};

double cos60=0.5;
double sin60=0.86602540378443;


void print(point& tt)
{
	printf("%.2lf %.2lf\n",tt.x,tt.y);
}

void draw(point& p1,point& p2,int n)
{

	if(n<=0)
	{	
		print(p1);
		return;
	}
	point p3,p4,p5;
	double a,b;
	p3.x=p1.x+(p2.x-p1.x)/3;
	p3.y=p1.y+(p2.y-p1.y)/3;
	p5.x=p1.x+2*(p2.x-p1.x)/3;
	p5.y=p1.y+2*(p2.y-p1.y)/3;
	a=p5.x-p3.x;
	b=p5.y-p3.y;
	p4.x=p3.x+a*cos60-b*sin60;
	p4.y=p3.y+a*sin60+b*cos60;
	
	draw(p1,p3,n-1);
	draw(p3,p4,n-1);
	draw(p4,p5,n-1);
	draw(p5,p2,n-1);
}



int main()
{
//	freopen("in.txt","r",stdin);
	point p1,p2;int n;
	while(scanf("%d",&n)!=EOF)
	{
		scanf("%lf%lf%lf%lf",&p1.x,&p1.y,&p2.x,&p2.y);
		draw(p1,p2,n);
		print(p2);
		printf("\n");
	}
	return 0;
}
		

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -