其實(shí)這是在最近做商城的購(gòu)物車時(shí)想到的,當(dāng)有紅包的時(shí)候怎么獲取紅包的最大數(shù)額問(wèn)題 于是才有這個(gè)東西出現(xiàn)
NSMutableArray *redBags =[NSMutableArray arrayWithArray:@[@5,@15,@30,@40,@40,@50]]; //[NSMutableArray arrayWithArray:@[@5,@15,@25,@30,@50]];// 當(dāng)前的紅包
NSMutableArray *redBagsSelected = [NSMutableArray array];
for(int i = 0 ;i < 91;i++)
{
[redBagsSelected addObject:@0];
}
int price = 90;
char state[6][91];
for(int i = 0; i < redBags.count; i++)
{
for(int j = price; j >= [redBags[i] intValue]; j--)
{
int index = j- [redBags[i] intValue];
int tmp = [redBagsSelected[index] intValue]+ [redBags[i] intValue];
if(tmp > [redBagsSelected[j] intValue])
{
redBagsSelected[j] = [NSNumber numberWithInt:tmp];
state[i][j] = 1;
}
}
}
NSLog(@"給的數(shù)字為%d,最接近數(shù)字為%d",price,[redBagsSelected[price] intValue]);
for(int i = 0;i<6;i++)
{
NSLog(@"i == %s",state[i]);
for(int j = 0; j< 101;j++)
{
NSLog(@"j == %d",state[i][j]);
}
}
int i = (int)redBags.count;
int j = price;
NSLog(@"組合數(shù)字為:");
while(i-- >= 0)
{
if(state[i][j] == 1)
{
NSLog(@"%d ",[redBags[i] intValue]);
j -= [redBags[i] intValue];
}
}
還有就是獲得不同的紅包組合