注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

千鸟

本blog所有日志均系原创 转载请注明出处

 
 
 

日志

 
 

算法之美1  

2007-03-14 19:47:00|  分类: Arithmetic |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

下是偶写的一些算法,荣誉献上

1.洗牌

#include"iostream.h"
#define n  54

void main()
{
 int a[n],b[n],i;
 for(i=1;i<=n;i++)
   a[i]=i;
   for(i=1;i<=n;i++)
   cout<<" "<<a[i];
   cout<<endl;

 for(;;)
 {
        for(i=1;i<=n;i++)
  b[i]=a[i];
  for(i=1;i<=n;i++)
  {
   if(i%2!=0)
    a[i]=b[n/2+i/2+1];
   else a[i]=b[i/2];
  }
  for(i=1;i<=n;i++)
   cout<<" "<<a[i];
  cout<<" n是不是你要的?1:终止  0:继续 n";
  int c;
  cin>>c;
  if(c==1)
   break;
  
 }

//////////////////////////////////

2.判断多少张牌多少可以洗回原样

#include"iostream.h"
#define max  100

void main()
{


       int n=max,i,times,a[max],b[max],count,seeall=0;
    for(count=1;count<=n;count++)
    {
     int cd;
      for(cd=1;cd<=count;cd++)
                  a[cd]=cd;
   for(cd=1;cd<=100;cd++)
   {
        for(times=1;times<count;times++)
     {
      b[times]=a[times];

     }
         for(i=1;i<=count;i++)
      {
         if(i%2!=0)
            a[i]=b[count/2+i/2+1];
         else a[i]=b[i/2];
      }
     if(a[1]==1)
     {
    cout<<count<<"      "<<"洗了"<<cd<<endl;
     seeall++;
        break;
     }
                
   
   }


    }
    cout<<"---------100以内一共有"<<seeall<<"种排法可以洗回来"<<endl;
}

}

////////////////////////////////////////////

3阶乘的0的个数

#include "iostream.h"

int cout5(int z,int biao5)
 {
  int biaoji=0;
  if(z<biao5)
  return 0;
  for(int c=biao5;c<=z;c=c+biao5)
  {
   biaoji++;
  }
        return biaoji+cout5(z,biao5*5);

 }
void main()
{
   cout<<"    "<<cout5(23456,5)<<endl;
}
///////////////////////////////////

4.一个对称数组

#include "iostream.h"
#define n 20
void main()
{
   int a[n][n];
   int i,j,tt=0;
   for(i=0;i<n;i++)
   {
    for(j=0;j<n;j++)
    {
             tt++;
      if(i==j)
    {
   a[i][j]=i;//cout<<a[i][j];
    }
      if(i<j)
   {
     a[i][j]=i;//cout<<a[i][j];
   }
      else
   {
     a[i][j]=j;//cout<<a[i][j];
   }

    }
   }
   // cout<<tt<<endl;
 
 for(i=0;i<n;i++)
 { for(j=0;j<n;j++)
  
    cout<<a[i][j];
  cout<<endl;
 }

}

////////////////////////////////

5只用2个变量求最大公约数

#include"iostream.h"
void main()
{

// int n=6099,m=2166;
 int c=0;
int m=119,n=544;
 do
 {
  m=m*n;
        n=m/n;
  m=(m/n)%n;  
        c++;
 }while(m!=0);
   cout<<n;
   cout<<"c++"<<c;
}

  评论这张
 
阅读(364)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017