注意点

浙大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;
}

posted @ 2012-04-27 23:03  naglish  阅读(217)  评论(0编辑  收藏  举报