poj-1247 Magnificent Meatballs

#include <stdio.h>
#include <stdlib.h>

#define MAX_NUM 3

int findPosSE(int n)
{
    int meatBalls[n];
    int sum = 0;
    int i;
    for (i=0; i<n; i++)
    {
        scanf("%d",&meatBalls[i]);
        sum+=meatBalls[i];
    }
    if(sum%2==1)
        return -1;
    int half=sum/2;
    for(i=0; i<n; i++)
    {
        if(half==meatBalls[i])
            return i+1;
        half-=meatBalls[i];
    }
}
int main()
{
    int n;
    while(scanf("%d",&n)!=EOF && n!=0)
    {
        int s_pos=findPosSE(n);
        if(s_pos==-1)
            printf("Not Find Position...\n");
        else
            printf("Position: %d %d",s_pos,s_pos+1);
    }
    return 0;
}

先上学长的完美代码🆒

 2019-11-30

1247 把题读懂  多想想主要的过程  把思路梳理🌤 先干什么后干什么 然后再开始写

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 30

void find(int n);
void print(int flag,int Sam);
int main()
{
    int n;
    while(scanf("%d",&n) && n!=0)
    {
        find(n);
    }
    return 0;
}
void print(int flag,int Sam)
{
    if(flag)
    {
        printf("No equal partitioning.\n");
    }
    else
    {
        printf("Sam stops at position %d and Ella stops at position %d.\n",Sam,Sam+1);
    }
}
void find(int n)
{
    int num;
    int sums[N],sum;
    memset(sums,0,sizeof(sums));
    int i,j;
    int Sam,flag=1;
    for(i=1; i<=n; i++)
    {
        scanf("%d",&num);
        sums[i]=sums[i-1]+num;
    }
    sum=sums[n];
    for(j=1; j<n; j++)
    {
        if(2*sums[j]==sum)
        {
            flag=0;
            Sam=j;
            break;
        }
    }
    print(flag,Sam);
}

 

posted @ 2019-12-01 18:32  今天你AC了吗  阅读(127)  评论(0)    收藏  举报