资讯   |   开发   |   选机中心   |   产品大全 | IBM | 惠普 | 联想 | 戴尔 | 苹果 | 神舟
更多: | 华硕 | 明基 | 方正 | 紫光 | TCL | 夏新 | 联宝 | 宏碁 | 七喜 | 长城 | 清华同方 | 海尔 | 三星 | 东芝 | 索尼 | 富士通 | LG | 技术 | ddnoon
当前位置:笔记本 > 软件开发 >
Advertisement
文章正文

排列的问题

类型:转载   责任编辑:asp.net   日期:2007/05/23


热门软件下载:


   

1,2,3  
  这三个数共有多少种排列,分别是什么?用pb怎么写呀

网友回答:

发表者:kirao

別人給的一個c語言寫的,我還沒有改成pb的,你看看!  
   
  *TC   2.0         */  
  #include<stdio.h>  
  #include<stdlib.h>  
  #include<conio.h>  
   
  int     number[50];     /*最多求50个数的组合。   */  
  int     m=24,n=7;   /*   2<=m<=50,n<m   ,自己可以改动   */  
  const   false=0,true=1;  
   
  void     inition()     /*初始化*/  
  {  
  int     i;  
  for(i=0;i<n;i++)  
  number[i]=1;  
  }  
   
  void     output()     /*输出组合结果*/  
  {  
  int     i;  
  for(i=0;i<m;i++)  
  if(number[i])  
  printf("%3d",(i+1));  
  printf("\n");  
  }  
   
  void     main()  
  {  
  long     count=0;             /*计数组合个数   */  
  int     i,j,k,l;  
  int     findfirst,end=false,swap;  
  inition();         /*初始化   */  
                  output();               /*结果输出*/  
  count++;  
  j=m;  
  while(!end)  
  {  
  findfirst=false;  
  swap=false;             /*标志复位*/  
  for(i=0;i<j;i++)  
  {  
  if(!findfirst     &&     number[i])  
  {  
  k=i;     /*k记录下扫描到的第一个数*/  
  findfirst=true;       /*设置标志         */  
  }  
  if(number[i]     &&     !number[i+1])     /*从左到右扫描第一个“10”组合*/  
  {  
  number[i]=0;  
  number[i+1]=1;  
  swap=true;     /*设置交换标志   */  
  for(l=0;l<i-k;l++)  
  number[l]=number[k+l];  
  for(l=i-k;l<i;l++)  
  number[l]=0;     /*交换后将之前的“1”全部移动到最左端   */  
  if(k==i     &&     i+1==m-n)     /*如果第一个“1”已经移动到了m-n的位置,说明*/  
  /* //这是最后一个组合了。         */  
  end=true;  
  }  
  if(swap)     /*交换一次后就不用继续找“10”组合了   */  
  break;  
  }  
  output();     /*结果输出                 */  
  count++;     /*组合数计数器递增1     */  
  }  
  printf("total     number     of     combination     is:   %d   \n",count);     /*打印总的组合数*/  
  printf("press   any   key   to   continue!\n");  
  getch();  
  }  
 

发表者:jiangxj

integer   i,j,k  
  for   i=1   to   3  
  messagebox("",string(i))  
  for   j=1   to   3  
  if   i=j   then   CONTINUE  
  messagebox("",string(i)+","+string(j))  
  for   k=1   to   3  
  if   i=k   or   j=k   then   CONTINUE  
  messagebox("",string(i)+","+string(j)+","+string(k))  
  next  
  next  
  next  
 


 

 
热门推荐笔记本: IBM笔记本
相关文章:
webmaster:popbb@126.com   最佳浏览:1024X768 MSIE
©2007 popbb.net All Rights Reserved