为什么我要

2024-05-13 02:24:11 发布

您现在位置:Python中文网/ 问答频道 /正文

问题陈述:
萨钦很喜欢吃甜食。所以,他去了一个糖果市场。有一排甜品摊位。每个甜品摊都有不同的甜点。为了节省时间,他决定从相邻的摊位上买糖果。所以,他可以从任何他想要的摊位买东西,但是所有这些摊位都必须是相邻的。他还决定在每个摊位上只买1公斤的糖果。每个摊位赠送1公斤糖果。那个市场有一个奇怪的计费规则。这条规则是这样的——所有糖果的总成本是所有糖果的成本乘以他最后购买的糖果的成本之和。e、 如果他买的糖果的价格是2,3,4的顺序与糖果的总成本是2*4+3*4+4*4=36。现在他想知道所有可能的糖果购买方式的总成本是多少。你能帮他吗。因为这个数字可能很大,所以您应该取最终结果的模10^9+7。
示例
样本测试用例1-

    Input
    3
    1
    2
    3

    Output
    53

    Explanation
    Possible ways of buying sweets are- 
    a) 1
    b) 1 2
    c) 2
    d) 1 2 3
    e) 2 3
    f) 3
    cost of each of these is following-
    a) 1*1= 1 
    b) 1*2+2*2= 6
    c) 2*2= 4
    d) 1*3+2*3+3*3= 18
    e) 2*3+3*3= 15
    f) 3*3= 9

我用这段代码解决了这个问题,但我在比赛中还是得了0分:(

^{pr2}$

请帮我找出我犯的错误


Tags: of市场顺序规则方式价格成本糖果
3条回答

据我所知:
假设价格是a、b和c
现在我们假设所有产品的总价为“x”
也就是说你要找的号码是 “ax+bx+cx”因为这是产品的可能价格 等于(a+b+c)x=>;x*x 所以如果给你一个数字列表,你只需要把它们加起来 剩下的你会知道吗?在

int possibleways(int input1_size,int *input1)
{

    unsigned int pow_set_size = pow(2, input1_size);
    int counter, j;

    for(counter = 0; counter < pow_set_size; counter++)
    {
      for(j = 0; j < set_size; j++)
       {
          /* Check if jth bit in the counter is set
             If set then pront jth element from set */
          if(counter & (1<<j))
            printf("%d", input1[j]);
       }
       printf("\n");
    }
}


// I wrote this code it showed the output still , I got 0 in  exam competition.

如果你从最后一次暂停向后工作,问题就可以简化。考虑以下代码:

import itertools

test = [3,1,2,3]

cum_cost = 0

for num_visits in range(1,len(test)+1):
    print('Number of Visits: ',num_visits)
    for end_stall in test:
        print('\tEnd Stall',end_stall)
        remaining_stalls = test[:]
        remaining_stalls.remove(end_stall)
        visits_left = num_visits - 1
        stalls_left = len(remaining_stalls)
        perms = itertools.permutations(remaining_stalls,visits_left)
        perms1, perms2 = itertools.tee(perms)
        p = [perm for perm in perms1]
        s = sum([sum(perm)+end_stall for perm in perms2])*end_stall
        print('\t\tVisits left',visits_left)
        print('\t\tStalls left',stalls_left)
        print('\t\tpermutations',p)
        print('\t\tSum',s,' Running Sum',cum_cost)
        cum_cost+=s
    print('\n')
print('Grand Total',cum_cost)

通过取消“最后一个摊位”(因为我们在倒推),我们找到了参加其他摊位的所有可能组合。然后我们可以计算出每一个的成本,并将它们加到一个总成本中。在

相关问题 更多 >