海盗分赃
题目
答案
最简版本(8行代码)
#include<stdio.h>
int main()
{
int money,n;
scanf("%d %d",&money,&n);
if(n==3) printf("%d",money-1);
else printf("%d",money-n/2-1);
}
详细流程
(把注释部分还原就能看到不同人数的金钱的分配)
#include<stdio.h>
int main()
{
int money,n;
scanf("%d %d",&money,&n);
int a[n+1],i,j;
for(i=1;i<=n;i++)
a[i]=0;
for(i=1;i<=n;i++)
{
if(i==3)
{
a[i-2]=0;
a[i-1]=1;
a[i]=money-1;
}
else
{
int flag=0,sum=0;
a[i-1]=0;
for(j=1;j<i-1;j++)
{
if(a[j]==0) a[j]=1;
else if(a[j]!=1) a[j]=0;
else if(a[j]==1&&flag==0)
{
a[j]=2;
flag=1;
}
else if(a[j]==1&&flag==1) a[j]=0;
}
for(j=1;j<i;j++)
sum+=a[j];
a[i]=money-sum;
sum=0;
flag=0;
}
// for(j=1;j<=i;j++)
// printf("%d ",a[j]);
// printf("\n");
}
printf("%d",a[i-1]);
}
注意
这类题首先要分析流程找规律,其次再进行代码的构思