题目链接:uva 10609 - Fractal
题目大意:给出A,B两个点的坐标,以及T,每次找到A、B的四等分点C,D,然后以AB/2为边长,C,D为顶点,构建一个等边三角形,E为另外一个顶点,然后再对C,E;E,D做同样的操作,直到构建的等边三角形的边长小于T时。输出所有过程中的点,按照x坐标排序,相同的按照y坐标。
解题思路:dfs模拟,用ans记录点,最后排序,C,D,E可以根据向量的方法从A,B得到。
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <vector>
#include <algorithm>
using namespace std;
const double sq3 = sqrt(3.0);
struct point {
double x, y;
};
vector<point> ans;
double T;
bool cmp(const point& a, const point& b) {
if (fabs(a.x - b.x) > 1e-6) return a.x < b.x;
return a.y < b.y;
}
double dis(double x, double y) {
return sqrt(x*x + y*y);
}
void dfs (point A, point B) {
double len = dis(A.x - B.x, A.y - B.y);
if (len / 2 < T) return;
point C, D, E;
C.x = B.x + 3 * (A.x-B.x) / 4;
C.y = B.y + 3 * (A.y-B.y) / 4;
D.x = B.x + (A.x-B.x) / 4;
D.y = B.y + (A.y-B.y) / 4;
E.x = (A.x+B.x)/2 + sq3/4*(A.y-B.y);
E.y = (A.y+B.y)/2 - sq3/4*(A.x-B.x);
ans.push_back(C);
ans.push_back(D);
ans.push_back(E);
dfs(C, E);
dfs(E, D);
}
int main () {
int cas = 1;
point A, B;
while (scanf("%lf%lf%lf%lf%lf", &A.x, &A.y, &B.x, &B.y, &T) == 5 && T >= 1) {
ans.clear();
ans.push_back(A);
ans.push_back(B);
dfs(A, B);
printf("Case %d:\n", cas++);
sort(ans.begin(), ans.end(), cmp);
printf("%lu\n", ans.size());
for (int i = 0; i < ans.size(); i++) printf("%.5lf %.5lf\n", ans[i].x, ans[i].y);
}
return 0;
}
分享到:
相关推荐
Laravel开发-laravel-fractal Fractal 集成包(API 开发必备) 分形为复杂的数据输出提供了样式和转化层,spatie/laravel fractal为聚集分形提供了便利
Laravel开发-laravel-fractal 用于Laravel应用程序的易于使用的分形积分
Laravel开发-fractal-laravel 分形库的Laravel绑定。
Laravel开发-fractal-illuminate-paginator 将照亮的分页结果返回到分形序列化器
Laravel开发-fractal-response 在Laravel响应中使用变压器
Laravel开发-fractal-laravel-service Laravel框架的分形服务提供商
Laravel开发-fractal SPATIE分形包装的包装纸
jsonapi-fractal 受Fractal(PHP)启发的JSON:API序列化器 安装 yarn add jsonapi-fractal OR npm install jsonapi-fractal --save 简单序列化 import { serialize } from 'jsonapi-fractal' const entity = { ...
Api-laravel-fractal.zip,一个简单易用的分形包装器,用于拉维和流明应用。一个简单易用的分形包装器,用于拉维和流明应用,一个api可以被认为是多个软件设备之间通信的指导手册。例如,api可用于web应用程序之间的...
Api-laravel-datatables-fractal.zip,拉威尔数据表分形插件。拉威尔数据表分形插件,一个api可以被认为是多个软件设备之间通信的指导手册。例如,api可用于web应用程序之间的数据库通信。通过提取实现并将数据放弃到...
分形曲线分形几何学之二-fractal_explorer.m 分形曲线 分形几何学之一: https://www.ilovematlab.cn/thread-88859-1-1.html 程序: lyapunovfractal2.m 结果: 1.gif...
有源程序!!以具体实例简单阐述Matlab 在分形学、物理学上的几种应用。
三维随机分形地形生成(续十二)纹理 Three-dimensional random fractal terrain generation
三维随机分形地形生成(续十四)分形计算核心代码Three-dimensional random fractal terrain generation
Algorithm of MF-DFA with example Spanish version, of Warsaw
一个多重分形谱的计算程序,希望对大家有用
this file is for antenna design (Fractal Antenna) using CST microwave studio
-Fractal-analysis
New-VR-Fractal-with-Scene