注意点
浙大ACM里面的Non-zero Exit Code,可能指c中int main()中忘写return 0;
1539 数组不行,存储空间太大,虽然电脑上能运行,但不能通过。
必须用递归。
#include<stdio.h>
long int count(long int n)
{
if(n<3)
return 0;
else if(n==3)
return 1;
else
return count(n/2)+count((n+1)/2);
}
int main()
{
long n;
while(scanf("%ld",&n)!=EOF)
{
printf("%ld\n",count(n));
}
return 0;
}
1589
必须两个数组,一个为什么不行呢!算法理解不透彻,写错了。
#include<stdio.h>
#include<string.h>
int main()
{
int t,m,i,q,w,e,k;
int map[26][26],map1[26][26];
char a[3];
scanf("%d",&t);
for(i=1;i<=t;i++)
{
scanf("%d",&m);
memset(map,0,sizeof(map));
memset(map1,0,sizeof(map1));
k=0;
while(m--)
{
scanf("%s",a);
if(a[1]=='>')
map[a[2]-'A'][a[0]-'A']=map1[a[2]-'A'][a[0]-'A']=1;
else
map[a[0]-'A'][a[2]-'A']=map1[a[0]-'A'][a[2]-'A']=1;
}
printf("Case %d:\n",i);
for(e=0;e<26;e++)
{
for(w=0;w<26;w++)
{
for(q=0;q<26;q++)
{
if(map[w][e]==1&&map[e][q]==1)
{
map[w][q]=1;
}
}
}
}
for(q=0;q<26;q++)
{
for(w=0;w<26;w++)
{
if(map[q][w]==1&&map1[q][w]==0)
{
printf("%c<%c\n",q+'A',w+'A');
k=1;
}
}
}
if(k==0)
printf("NONE\n");
}
return 0;
}