教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 幼儿教育 >

河南省第四届ACM程序设计大赛部分答案

来源:网络收集 时间:2026-08-22
导读: 2011年河南省在河南科技大学举办的第四届程序设计大赛部分答案。 答案仅供参考 【T1】序号互换 #includestdio.h #includestdlib.h #includemath.h int Pow(int n,int x) { int i,sum=1; for(i=1;i=x;i++) sum*=n; return sum; } int main() { char **p,c; in

2011年河南省在河南科技大学举办的第四届程序设计大赛部分答案。

答案仅供参考
【T1】序号互换
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int Pow(int n,int x)
{
int i,sum=1;
for(i=1;i<=x;i++)
sum*=n;
return sum;
}
int main()
{
char **p,c;
int i,j,k,sum,n,l,*q;
scanf("%d",&n);
p=(char**)malloc(n*sizeof(char*));
for(i=0;i<n;i++)
{
*(p+i)=(char*)malloc(Pow(10,4)*sizeof(char));
scanf("%s",*(p+i));
}
for(i=0;i<n;i++)
{

sum=0;
l=0;
while(*(*(p+i)+l)!='\0')
l++;
if(*(*(p+i))>='A'&&*(*(p+i))<='Z')
{
for(j=0;j<l;j++)
sum+=(*(*(p+i)+j)-'A'+1)*Pow(26,l-1-j);
printf("%d\n",sum);
}
else
{
sum=0;
j=0;
while(*(*(p+i)+j)!='\0')
{
sum+=(*(*(p+i)+j)-'0')*Pow(10,l-1-j);
j++;
}
q=(int*)malloc(l*sizeof(int));
j=0;
while(sum!=0)
{
q[j]=sum%26;
sum=sum/26;
if(q[j]==0)
{q[j]=26;sum--;}
j++;
}
for(k=0;k<j;k++)
printf("%c",(q[j-1-k]-1+'A'));
putchar('\n');
}
}
free(p);
system("psuse");
return 0;
}
【T2】节能
#include<stdio.h>
#include<stdlib.h>
int N,**P;
int main()
{
long digui(int now,long sum,int time);
int i,v;
long Wmin;
scanf("%d",&N);
scanf("%d",&v);
P=(int **)malloc(N*sizeof(int *));
for(i=0;i<N;i++)
{
*(P+i)=(int *)malloc(3*sizeof(int));
scanf("%d%d",*(P+i),*(P+i)+1);
*(*(P+i)+2)=1;

}
Wmin=digui(v-1,0,0);
printf("%ld\n",Wmin);
return 0;

}
long digui(int now,long sum,int time)
{
int i;
long w1=0,w2=0,sum1,sum2,time1,time2;
P[now][2]=0;
for(i=now-1;i>=0;i--)
{
if(P[i][2]==1)
{
time1=time+P[now][0]-P[i][0];
sum1=sum+time1*P[i][1];
w1=digui(i,sum1,time1);
break;

}

}
for(i=now+1;i<N;i++)
{
if(P[i][2]==1)
{
time2=time+P[i][0]-P[now][0];
sum2=sum+time2*P[i][1];
w2=digui(i,sum2,time2);
break;

}

}
P[now][2]=1;
if(w1==0&&w2==0)
return sum;
else
if(w1!=0&&w2!=0)
return w1<w2 ? w1 : w2;
else
if(w1!=0)
return w1;
else
return w2;

}
【T3】表达式求值
【方法一】
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int i,j;
char **p;
int Pow(int x,int y)
{
int k,sum=1;
for(k=0;k<y;k++)
sum*=x;
return sum;

}
int main()
{
int N,sum;
int digui();
scanf("%d",&N);
p=(char**)malloc(N*sizeof(char*));
for(i=0;i<N;i++)
{
*(p+i)=(char*)malloc(300*sizeof(char));
scanf("%s",*(p+i));

}
for(i=0;i<N;i++)
{
j=0;
sum=digui();
printf("%d\n",sum);

}
return 0;

}
int digui()
{
int k=0,l,sum=0,num1,num2;
char *s,c;
c=*(*(p+i)+j++);
if('0'<=c&&c<='9')
{
s=(char*)malloc(4*sizeof(char));
s[0]=c;
k=1;
while('0'<=(c=*(*(p+i)+j++))&&c<='9')
{
s[k]=c;
k++;
}
j--;
l=k;
for(k=0;k<l;k++)
sum+=(s[k]-'0')*Po
w(10,l-1-k);

return sum;

}
else
{
s=(char*)malloc(3*sizeof(char));
s[0]=c;
s[1]=*(*(p+i)+j++);
s[2]=*(*(p+i)+j++);
j++;
num1=digui

2011年河南省在河南科技大学举办的第四届程序设计大赛部分答案。

();
j++;
num2=digui();
j++;
if(s[0]=='a')
return num1+num2;
else
if(s[2]=='n')
return num1<num2 ? num1 : num2;
else
return num1>num2 ? num1 : num2;

}

}
【方法二】
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int Pow(int x,int y)
{
int i,sum=1;
for(i=0;i<y;i++)
sum*=x;
return sum;

}
int main()
{
int i,n,j,m,k,l,N,sum,z1[100],num;
char **p,z2[100][3],s[4],c;
scanf("%d",&N);
p=(char**)malloc(N*sizeof(char*));
for(i=0;i<N;i++)
{
*(p+i)=(char*)malloc(300*sizeof(char));
scanf("%s",*(p+i));

}
for(i=0;i<N;i++)
{
j=k=l=0;
do{
c=*(*(p+i)+j++);
if('0'<=c&&c<='9')
{
s[0]=c;
m=1;
while('0'<=(c=*(*(p+i)+j++))&&c<='9')
{
s[m]=c;
m++;

}
j--;
n=m;
for(num=0,m=0;m<n;m++)
num+=(s[m]-'0')*Pow(10,n-1-m);
z1[k]=num;
k++;
while(z2[l-1][0]==',')
{
k--;
if(z2[l-2][0]=='a')
z1[k-1]=z1[k-1]+z1[k];
else
if(z2[l-2][2]=='n')
z1[k-1]=z1[k-1]<z1[k] ? z1[k-1] : z1[k];
else
z1[k-1]=z1[k-1]>z1[k] ? z1[k-1] : z1[k];

l=l-2;
if(l==0)
sum=z1[0];

}

}
else
if(c==',')
{
z2[l][0]=c;
l++;
}
else
if(c!=')')
{
z2[l][0]=c;
z2[l][1]=*(*(p+i)+j++);
z2[l][2]=*(*(p+i)+j++);
j++;
l++;

}

}while(l!=0);

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

}

return 0;
}
【T4】走迷宫
#include<stdio.h>
#include<stdlib.h>
int N,**a,**b;
int main()
{
int i,j,max,min,cha;
int digui(int r,int c,int max,int min);
scanf("%d",&N);
a=(int **)malloc(N*sizeof(int *));
b=(int **)malloc(N*sizeof(int *));
for(i=0;i<N;i++)
{
*(a+i)=(i …… 此处隐藏:3697字,全部文档内容请下载后查看。喜欢就下载吧 ……

河南省第四届ACM程序设计大赛部分答案.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/1485669.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)