首页   |   IT资讯   |   综合资讯   |   开发   |   软件   |   问答   |   网络技术   |   网络综合
更多:
当前位置:首页 » 手机数码
文章正文

****************小弟想了三天没解决的循环算法问题,高分求助,????*************8

类型:转载   责任编辑:asp   日期:2007/03/01

    

输入4  
  输出  
  1       2       3       4  
  12     13     14     5  
  11     16     15     6  
  10     9       8       7  
   
  输入5  
  输出  
  1       2       3       4     5  
  16     17     18     19   6  
  15     24     25     20   7  
  14     23     22   21     8  
  13     12     11     10   9    
  如何写出实现上述的程序?先谢了!!!!!!!!!!!!!  
 

推荐阅读

  • “神舟三号”试验飞船02年3月25日在酒泉发射升空 [详细内容]
  • 大宇成立上海「耀宇」研发在线游戏 [详细内容]
  • 补充点使用技巧 [详细内容]
  • “神舟五号”03年10月15日成功发射 [详细内容]
  • EA推出专为女性玩家量身定做的Sims 2游戏 [详细内容]
  • 为自己的550常用语添彩 [详细内容]
  • 小巧精妙SAFA Q100 MP3播放器评测 [详细内容]
  • 网友回答:
    网友:greenever

     
      #include   "stdio.h"  
      void   helix(int   l,int   n,int   m);  
       
      int   main(int   argc,   char*   argv[])  
      {  
      printf("hello   world!\n");  
      int   i,n=10;  
      for(i=1;i<=n;i++)  
      {  
      helix(1,n,i);  
      printf("\n");  
      }  
      return   0;  
      }  
       
      void   helix(int   l,int   n,int   m)  
      {  
      int   i;  
      if(m==1)  
      {  
      for(i=l;i<l+n;i++)  
      {  
      printf("%4d",i);  
      }  
      }  
      else   if(m==n)  
      {  
      for(i=l+(n-1)*3;i>=l+(n-1)*2;i--)  
      {  
      printf("%4d",i);  
      }  
      }  
      else  
      {  
      printf("%4d",l+(n-1)*4-m+1);  
      if(n>2)  
      {  
      helix(l+(n-1)*4,n-2,m-1);  
      }  
      printf("%4d",l+n-1+m-1);  
      }  
      }

    网友:szqzy

     
      方法一:  
      可否设置一个4或5维的数组,每一次计算左上的数字,该数组保存上一行数据,以计算下一行数据。  
      方法二:  
      按照相应的规律利用文件指针定位写到一个.dat文件中去,最后依次输出,这样不存在循环的做法。  
       
      我们c语言考试考过这道题,最后一道,呵呵  
     

    网友:slin000

    哈哈,太容易了,花了半个小时,写了一个,已经试过了,好用的很呀!  
       
       
      #include   "stdafx.h"  
       
      int   *   getmartrix(int   sidelength)  
      {  
      if(sidelength<=0)  
      return   0;  
      int   *   pmartrix   =   new   int[sidelength*sidelength],  
      *   pint;  
       
      enum   {top,right,bottom,left}   side;  
      int   length,step,i,j,value;  
      side   =   top;  
      length   =   sidelength;  
      step   =   0;  
      i   =   j   =   0;  
      value   =   1;  
      pint   =   pmartrix;  
      for(;length   !=0   ;)  
      {  
      pint[j   *   sidelength   +   i]   =   value++;  
      switch(side)  
      {  
      case   top:  
      ++step;  
      if(step   >=   length)   //the   end   on   right  
      {  
      side   =   right;  
      step   =   0;  
      --length;  
      ++j;  
      }else  
      ++i;  
      break;  
      case   right:  
      ++step;  
      if(step   >=   length)   //the   end   on   bottom  
      {  
      side   =   bottom;  
      step   =   0;  
      --i;  
      }else  
      ++j;  
      break;  
      case   bottom:  
      ++step;  
      if(step   >=   length)   //the   end   on   left  
      {  
      side   =   left;  
      step   =   0;  
      --length;  
      --j;  
      }else  
      --i;  
      break;  
      case   left:  
      ++step;  
      if(step   >=   length)   //the   end   on   bottom  
      {  
      side   =   top;  
      step   =   0;  
      ++i;  
      }else  
      --j;  
      break;  
      }  
      }  
      return   pmartrix;  
      }  
      int   main(int   argc,   char*   argv[])  
      {  
      int   *   pmartrix   =   null,  
      *   pint,  
      sidelength,  
      i,j;  
      for(;;)  
      {  
      if(pmartrix)  
      {  
      delete   pmartrix;  
      pmartrix   =   null;  
      }  
      printf("\n----------------------------\ninput   side   length,0   to   quit   :");  
      scanf("%d",&sidelength);  
      if(sidelength<=0)  
      break;  
      if(sidelength>=100)  
      {  
      printf("too   big");  
      continue;  
      }  
      pmartrix   =   getmartrix(sidelength);  
      pint   =   pmartrix;  
      for(j=0;j<sidelength;j++)  
      {  
      for(i=0;i<sidelength;i++,pint++)  
      printf("%.d\t",*pint);  
      printf("\n");  
      }  
      }  
      return   0;  
      }  
       
      好了,喝酒吧,哈哈哈哈  
      其实我最喜欢这样的问题了,好玩。。。。。。  
     

    网友:laolaoliu2002

    把   greenever(司马青杉)   的程序改成下面这样就可以输入一个整数得到想要的矩阵了。  
       
      int   main(int   argc,   char*   argv[])  
      {  
      printf("hello   world!\n");  
      int   i,n;  
      printf("input   a   number:");  
      scanf("%d",&n);  
      printf("the   output   matrix   is:!\n");  
      for(i=1;i<=n;i++)  
      {  
      helix(1,n,i);  
      printf("\n");  
      }  
      return   0;  
      }  
     

    .
    站内导航:
    IT热门资讯:
      最佳浏览:1024X768 MSIE
    ©2007 jqmk.com.cn All Rights Reserved