-(BOOL)isInArray:(CGPoint)point{
if ([valid count]==0) {
return NO;
}
for (NSValue *value in valid) {
CGPoint er=[value CGPointValue];
if(CGPointEqualToPoint(point,er)) return NO;
}
return YES;
}
-(void)check:(CGPoint)next{
if (!next.y==0) {
int ics=(int) next.x;
int igrec=(int)next.y;
if (mat[ics][igrec]==mat[ics-1][igrec]){
if (![self isInArray:next]) {
[valid addObject:[NSValue valueWithCGPoint:next]];
NSLog(@"valid y!=0 : %@",valid);
[self check:CGPointMake(ics-1, igrec)];
}
}
}
y的列,X都行,垫子是C矩阵
什么,我想在这里做的是这样的:我得到一个点,next
,在一个矩阵中,mat
(我会使用结构,但对于测试范围,我使用CGPoint.it的基本相同的东西),并为此,我检查它是否在第一行,如果它不是我检查该值是否等于上述行的值。如果是,则将该点的坐标添加到数组中,并移至上面的值(递归)。我也有左,右,下的ifs ...但这个想法是一样的。
我的问题:
- 出于某种原因,它不因为它应该工作,即使采用了全1倍的值
- 的NSMutableArray里我使用存储点的垫子总是空(注意, NSLog得到调用,所以它应该已经添加了一个对象)
- 递归性是否与方法一起工作?
- 如果你有更好的想法如何做到这一点......我听
0123..n'm现在使用NSSet,移动了一些东西......它的工作原理..但它不工作,因为它应该..我会尝试修复它,但如果它不工作,我会把代码在这里......也许你可以帮助我一些:) – skytz 2012-04-12 17:25:51
所以我断定它不会调用'[自检:CGPointMake(ics-1,igrec)];'...任何想法? (或者如果它...它不能递归地工作) – skytz 2012-04-12 17:40:25
它似乎是我的一部分的错误..一个小..但现在它完美的工作..谢谢 – skytz 2012-04-12 17:57:19