重庆赛区ACM热身赛 8529. Cake

8529. Cake
【问题描述】

小 W 和小 R 同月同日生,今天是他们的生日~

但是只有一个生日蛋糕,切成了 n 块(每块是角度为 ai 的扇形)。

现在他们两人要拿走连续的若干块蛋糕(最终没有蛋糕剩余)。他们想知道怎样分,才能使得两人得到的扇形角度的总和之差最小。

输出两人获得蛋糕总和的最小角度差。(可能出现其中一人分不到任何蛋糕的情况。)

【输入形式】

第一行一个整数 n(1≤n≤360),表示蛋糕切成的扇形块数

第二行 n 个整数 ai(1≤ai≤360),表示每块扇形的角度,保证角度之和为 360 。输入数据是一个环。

【输出形式】

输出一个非负整数,表示小 W 与小 R 获得蛋糕角度之差的最小值。

【样例输入】

3
100 160 100

【样例输出】

40

【样例说明】

红色与黄色部分分别表示小 W 与小 R 分得的蛋糕,小 W 拿第 1、3 块,小 R 拿第 2 块。

 

 

看到这么多人发我也发一个(跟风233)

本人题解(C++):

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <math.h>
 4 
 5 int main()
 6 {
 7     int n,cake[360] = {0},man1,sum,min = -1;
 8     scanf("%d",&n);
 9     for(int i = 0; i < n; i ++)
10     {
11         scanf("%d",&cake[i]);
12     }
13 
14     for(int i = 0; i < n; i++)
15     {
16         man1 = cake[i];
17         for(int j = i + 1; man1 < 180; j++)
18         {
19             man1 += cake[j % n];
20         }
21         sum = abs(man1-(360 - man1));
22         if(min == -1 || min > sum)
23         {
24             min = sum;
25         }
26     }
27 
28     printf("%d",min);
29     return 0;
30 }

 

posted @ 2018-12-04 10:40  stardust-沙树  阅读(253)  评论(0编辑  收藏  举报