一个小题目

来源:互联网 发布:java测试工程师笔试题 编辑:程序博客网 时间:2024/05/31 13:14

看到一道题目,自己尝试了一下:编写一个在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是100的程序,并输出所有的可能性。例如:1 + 2 + 34 – 5 + 67 – 8 + 9 = 100.

首先要考虑所有的可能性,每两个数字间有3种可能,一共有3的8次方种可能。这样就能通过遍历实现。

- (void)viewDidLoad {    [superviewDidLoad];        //0表示没有符号,1表示+,2表示-   for (int i =0; i < pow(3,8); i++)    {       int newA = i;        NSMutableArray *allArray = [NSMutableArrayarray];       for (int j =0; j < 8; j ++)        {           int remainder = newA%3;            [allArrayaddObject:[NSNumbernumberWithInt:remainder]];            newA = newA/3;        }        [selfdealWithArray:allArray];    }      // Do any additional setup after loading the view, typically from a nib.}//array最多有8个元素- (void)dealWithArray:(NSMutableArray *)array{    //构建两个数组,一个是数字的数组,一个是符号的数组,数字数组必然多一个元素    NSMutableArray *numberArr = [NSMutableArrayarray];    NSMutableArray *symbolArr = [NSMutableArrayarray];    int a =1;//存储每个连续的数值   for (int i =0; i < array.count; i++)    {       switch ([array[i] intValue])        {           case 0:            {                a = a*10+i+2;            }               break;           case 1://+            {                [numberArraddObject:[NSNumbernumberWithInt:a]];                a=i+2;                [symbolArraddObject:@"+"];            }               break;           case 2://-            {                [numberArraddObject:[NSNumbernumberWithInt:a]];                a=i+2;                [symbolArraddObject:@"-"];            }               break;           default:               break;        }    }    [numberArraddObject:[NSNumbernumberWithInt:a]];//    NSLog(@"数字数组为:%@",numberArr);//    NSLog(@"运算符数组为:%@",symbolArr);        //进行最终的计算   int sum = [numberArr[0]intValue];   for (int k =0; k < symbolArr.count; k++)    {       NSString *symbol = symbolArr[k];       if ([symbol isEqualToString:@"-"])        {            sum = sum-[numberArr[k+1]intValue];        }       else        {            sum = sum+[numberArr[k+1]intValue];        }    }    //NSLog(@"最终结果为%d",sum);   if (sum==100) {        NSMutableString *mutableStr = [NSMutableStringstring];       for (int i =0; i < symbolArr.count; i++)        {            [mutableStrappendFormat:@"%@",numberArr[i]];            [mutableStrappendFormat:@"%@",symbolArr[i]];        }        [mutableStrappendFormat:@"%@",[numberArrlastObject]];       NSLog(@"对应的运算方法为:%@",mutableStr);    }}

习惯了objective-c的语法,反而对c不熟悉了。以后慢慢补充。

0 0
原创粉丝点击