类约瑟夫环问题
来源:互联网 发布:950x250淘宝轮播图 编辑:程序博客网 时间:2024/06/03 01:05
int CPMFKaisakiEditMain::CalAllKirinukiGroup(
std::vector<CURVE> AllKirinukiCrv, // [I/ ]
std::vector<struEname> AllKirinukiAds, // [I/ ]
std::vector< std::vector<CURVE> > &GropuKirinukiCrv, // [ /O]
std::vector< std::vector<struEname> > &GroupKirinukiAds // [ /O]
)
/**/
{
std::vector<CURVE> tem; //save one closed graph
std::vector<struEname> temEname;
VECTOR BeginVector; //beginpoint of one closed graph
VECTOR TemVector; //next point of the closed graph
int i = 0;
vector<CURVE>::iterator itDel;
vector<struEname>::iterator itDel2;
int crvtype;
//case of circle
for(i=0; i<AllKirinukiCrv.size(); i++)
{
geo_SengataGet(&AllKirinukiCrv[i], &crvtype);
if(GEO_EN == crvtype)
{
tem.push_back(AllKirinukiCrv[i]);
temEname.push_back(AllKirinukiAds[i]);
GropuKirinukiCrv.push_back(tem);
GroupKirinukiAds.push_back(temEname);
itDel = AllKirinukiCrv.begin()+i;
AllKirinukiCrv.erase(itDel);
itDel2 = AllKirinukiAds.begin()+i;
AllKirinukiAds.erase(itDel2);
}
}
while(!AllKirinukiCrv.empty())
{
tem.push_back(AllKirinukiCrv[0]);
temEname.push_back(AllKirinukiAds[0]);
///////
geo_SengataGet(&AllKirinukiCrv[0], &crvtype);
if(GEO_SENBUN == crvtype)
{
GEO_VEC_COPY(&AllKirinukiCrv[0].line.pnt1,&BeginVector);
GEO_VEC_COPY(&AllKirinukiCrv[0].line.pnt2,&TemVector);
}
else if(GEO_ENKO == crvtype)
{
GEO_VEC_COPY(&AllKirinukiCrv[0].circle.pnt1,&BeginVector);
GEO_VEC_COPY(&AllKirinukiCrv[0].circle.pnt2,&TemVector);
}
else
{
return 0;
}
itDel = AllKirinukiCrv.begin();
AllKirinukiCrv.erase(itDel);
itDel2 = AllKirinukiAds.begin();
AllKirinukiAds.erase(itDel2);
while(geo_TenTenIcchi(&TemVector,&BeginVector,1e-6,1e-6) == GEO_FALSE)
{
for(i=0; i<AllKirinukiCrv.size(); i++)
{
geo_SengataGet(&AllKirinukiCrv[i], &crvtype);
if(GEO_SENBUN == crvtype)
{
if(geo_TenTenIcchi(&TemVector, &AllKirinukiCrv[i].line.pnt1,1e-6,1e-6) == GEO_TRUE)
{
GEO_VEC_COPY(&AllKirinukiCrv[i].line.pnt2, &TemVector);
tem.push_back(AllKirinukiCrv[i]);
temEname.push_back(AllKirinukiAds[i]);
itDel = AllKirinukiCrv.begin()+i;
AllKirinukiCrv.erase(itDel);
itDel2 = AllKirinukiAds.begin()+i;
AllKirinukiAds.erase(itDel2);
break;
}
else if(geo_TenTenIcchi(&TemVector, &AllKirinukiCrv[i].line.pnt2,1e-6,1e-6) == GEO_TRUE)
{
GEO_VEC_COPY(&AllKirinukiCrv[i].line.pnt1, &TemVector);
tem.push_back(AllKirinukiCrv[i]);
temEname.push_back(AllKirinukiAds[i]);
itDel = AllKirinukiCrv.begin()+i;
AllKirinukiCrv.erase(itDel);
itDel2 = AllKirinukiAds.begin()+i;
AllKirinukiAds.erase(itDel2);
break;
}
else
{
continue;
}
}
else if(GEO_ENKO == crvtype)
{
if(geo_TenTenIcchi(&TemVector, &AllKirinukiCrv[i].circle.pnt1,1e-6,1e-6) == GEO_TRUE)
{
GEO_VEC_COPY(&AllKirinukiCrv[i].circle.pnt2, &TemVector);
tem.push_back(AllKirinukiCrv[i]);
temEname.push_back(AllKirinukiAds[i]);
itDel = AllKirinukiCrv.begin()+i;
AllKirinukiCrv.erase(itDel);
itDel2 = AllKirinukiAds.begin()+i;
AllKirinukiAds.erase(itDel2);
break;
}
else if(geo_TenTenIcchi(&TemVector, &AllKirinukiCrv[i].circle.pnt2,1e-6,1e-6) == GEO_TRUE)
{
GEO_VEC_COPY(&AllKirinukiCrv[i].circle.pnt1, &TemVector);
tem.push_back(AllKirinukiCrv[i]);
temEname.push_back(AllKirinukiAds[i]);
itDel = AllKirinukiCrv.begin()+i;
AllKirinukiCrv.erase(itDel);
itDel2 = AllKirinukiAds.begin()+i;
AllKirinukiAds.erase(itDel2);
break;
}
else
{
continue;
}
}
else
{
return 0;
}
}
if(i == AllKirinukiCrv.size())
{
break;
}
}
GropuKirinukiCrv.push_back(tem);
GroupKirinukiAds.push_back(temEname);
tem.clear();
temEname.clear();
}
return 0;
}
- 类约瑟夫环问题
- 约瑟夫问题、约瑟夫环
- 类实现 约瑟夫环问题
- Josephus约瑟夫环问题
- 约瑟夫环问题
- 约瑟夫环问题(Josephus)
- 约瑟夫环问题--java
- 约瑟夫环问题 Josephus
- 约瑟夫环问题
- 约瑟夫环问题
- 约瑟夫环问题
- 约瑟夫环问题
- 约瑟夫环问题
- 求解约瑟夫环问题
- 约瑟夫环问题
- 约瑟夫环问题
- 约瑟夫环问题
- 约瑟夫环问题
- 打印条形码
- 如何在php中修补XSS漏洞
- 一个民间治愈率极高的骨质增生配方!
- SQL Server 定时作业 与定时执行
- php导入到Excel 的 utf8、gbk 编码
- 类约瑟夫环问题
- Hibernate映射文件详解
- 把.NET程序部署到无NET Framwork机器
- CET 46级批量成绩查询
- MFC显示时间,日期,格式化输出
- SAP常用BASIS技巧整理
- C++和Java 哪个好? (源自 奇虎fvfve)
- .NET 简介 (来源:清华大学出版社)
- 关于pkg文件的一些高级选项