类型:转载 责任编辑:asp.net 日期:2007/05/23
热门软件下载:
1,2,3
这三个数共有多少种排列,分别是什么?用pb怎么写呀
网友回答:
別人給的一個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();
}
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