=1;i--){ for(j=1;jprintf" />

acm入门基础题解二

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Problem A: 数字菱形

#include

int main()

{ intn,i,j,a;

while(scanf("%d",&n)!=EOF)

{ for(i=1;i<=n;i++)

{ for(j=1;j<=n-i;j++)

printf(" ");

for(a=1;a<=(2*i-1);a++)

printf("%d",i);

printf("\n");

}

for(i=n-1;i>=1;i--)

{ for(j=1;j<=n-i;j++)

printf(" ");

for(a=1;a<=(2*i-1);a++)

printf("%d",i);

printf("\n");

}

}

return 0;

}

Problem B: 保卫钓鱼岛

#include

int main()

{ ints,T,n,a[100],i,j,t;

scanf("%d",&T);

for(s=1;s<=T;s++)

{ scanf("%d",&n);

for(i=0;i

scanf("%d",&a[i]);

for(i=1;i

for(j=0;j

if(a[j]

{ t=a[j];

a[j]=a[j+1];

a[j+1]=t;

}

for(i=0;i

if(i==0)printf("%d",a[i]);

elseprintf(" %d",a[i]);

printf("\n");

}

return 0;

}

Problem C: 最大盈利

#include

#include

int a[100005];

int main()

{

intt,i,j,k,l,m,n;

while(~scanf("%d",&t))

{ intcas=1;

while(t--)

{

scanf("%d",&n);

for(i=1;i<=n;i++)

scanf("%d",&a[i]);

intmax,st,ed,sum,s,e;

max=sum=a[1];

st=ed=s=e=1;

for(i=2;i<=n;i++)

{

if(sum+a[i]

sum=sum+a[i];

e++;

}

if(sum>max){st=s;max=sum;ed=e;}

}

printf("Payoff %d:\n",cas++);

printf("%d %d %d\n",max,st,ed);

printf("\n");

}

}

return 0;

}

Problem D: 基因分裂

#include

int main()

{ int f[100],n,i,j;

f[1]=1;

f[2]=2;

f[3]=3;

scanf("%d",&n);

while(n!=0)

{ {for(i=4;i<55;i++)

f[i]=f[i-1]+f[i-3];

}

printf("%d\n",f[n]);

scanf("%d",&n);

}

return 0;

}

Problem E: 碉堡

#include

char map[4][5];

intmaxCount;

intCanPut(int n, int x, int y)

{

int i;

i=x;

while(i>0 && map[i-1][y]!='X')

if (map[--i][y]=='O') return 0;

i=y;

while(i>0 && map[x][i-1]!='X')

if(map[x][--i]=='O') return 0; return 1;

}

void Search(int n, int k, intcurCount) {

intx,y;

if(k==n*n)

{

if(curCount>maxCount) maxCount=curCount;

return;

}

else

{

x=k/n;

y=k%n;

if(map[x][y]=='.' &&CanPut(n,x,y))

{

map[x][y]='O';

Search(n, k+1, curCount+1);

map[x][y]='.';

}

Search(n,k+1,curCount);

}

}

int main()

{

intn,i,count;

while(scanf("%d",&n)!=EOF && n>0) {

for(i=0;i

scanf("%s", map[i]);

maxCount=0;

Search(n, 0, 0);

printf("%d\n",maxCount);

}

}

相关文档
最新文档