首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

【2个有关问题】:1,图形碰撞;2,全排列有关问题;麻烦给出清晰具体的思路

2012-02-16 
【2个问题】:1,图形碰撞;2,全排列问题;麻烦给出清晰具体的思路;C/C++ code 题目描述:编写一个函数int IsOnRE

【2个问题】:1,图形碰撞;2,全排列问题;麻烦给出清晰具体的思路;

C/C++ code
 题目描述:编写一个函数int IsOnRECT(float x, float y, float r,        float x1, float y1, float x2, float y2)x,y表示一个圆的圆心,r是圆的半径x1,y1,x2,y2表示一个矩形的一条对角线上的两个顶点的坐标矩形的四边均与坐标轴平行或者垂直要判断这个圆和这个矩形有没有重合的部分输入:按照参数传递进行输入,样例中一行就是一次输入按顺序分别对应x,y,d,x1, ....输出:使用函数返回值作为输出,当有重合的时候返回非0,否则请返回0函数中不得含有任何其它输出,否则作为错误样例输入:1 1 1  0 0 2 21 1 1  2 2 3 3样例输出:10


C/C++ code
  题目描述:有重复元素的全排列问题输入:有多组测试数据,每组只有一行不超过100个且不包含空格的字符组成的串当遇到EOF标志时结束程序。输出:对于每组测试,输出由那组字符所能排列出来的所有组合,按Ascii码值比较,按字典顺序输出样例输入:123baca样例输出:123132213231312321aabcaacbabacabcaacabacbabaacbacabcaacaabcabacbaa


麻烦详细的解释一下方法,3Q。


[解决办法]
全排列 http://blog.csdn.net/LCL_data/archive/2010/02/03/5286847.aspx
[解决办法]
第1题
把你的矩形映射到x轴,或y轴上,看在x轴上的2条边的节点位置即可
就是一个边的节点在另一个边的内部。。
[解决办法]
1.
如果x1<x<x2 , 记resx = 0 ; 否则resx = min((x1-x)^2,(x2-x)^2);
如果y1<y<y2 , 记resy = 0 ; 否则resy = min((y1-y)^2,(y2-y)^2);
如果resx+resy <= r^2 就是相交
否则就是不相交
[解决办法]
大概就是这个意思了,输入参数的大小关系不怎么严密- -!
[解决办法]
直线相交

private bool IsCross(Point A, Point B, Point C, Point D)
{
int a = Math.Sign(Cross(A, C, D)) ^ Math.Sign(Cross(B, C, D));
int b = Math.Sign(Cross(C, A, B)) ^ Math.Sign(Cross(D, A, B));
return (a == b && a == -2);
}
private int Det(int X1, int Y1, int X2, int Y2)
{
return X1 * Y2 - X2 * Y1;
}
private int Cross(Point A, Point B, Point C)
{
return Det(B.X - A.X, B.Y - A.Y, C.X - A.X, C.Y - A.Y);
}
[解决办法]
第一个问题直接用数学解判断,需要处理边界情况
第二个问题直接用nextpermutation不就解决了吗?!

热点排行