| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3452 人关注过本帖
标题:[求助]求0-7(1-8位数)所能组成的奇数个数,想得快崩溃了还想不出来
只看楼主 加入收藏
chenxinfu
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2007-4-14
收藏
得分:0 
#include "stdio.h"
main()
{float i,s=1,sum=1,SUM=4;
for(i=6;i>=1;i--)
{s=s*i;
sum=sum+s; //求出中间部分的排列个数的总和
printf("s=%f,sum=%f\n",s,sum);
}
SUM=SUM+4*6*sum;
printf("SUM=%f\n",SUM);
}
这样可能比较容易理解吧。

[此贴子已经被作者于2007-4-16 19:10:55编辑过]


2007-04-15 12:55
yu_hua
Rank: 2
等 级:论坛游民
帖 子:222
专家分:95
注 册:2006-8-10
收藏
得分:0 
//给LZ一个全排列程序作参考:
#include<stdio.h>
void QPL(int n)//全排列
{ int i;
static char ans[12+1];
static char src[]="123456789abc";
static int N;
if(N==0)N=n;
if(n>12)return;
for(i=0;i<N;i++)
if(src[i])
{ ans[N-n]=src[i];
src[i]=0;//表示已取走
if(n>1)QPL(n-1);
else printf("%s\t",ans);
src[i]=ans[N-n];//归还
}
}
void main()
{ int n;//待排列的元素个数
scanf("%d",&n);
QPL(n);
}
2007-04-15 14:58
yu_hua
Rank: 2
等 级:论坛游民
帖 子:222
专家分:95
注 册:2006-8-10
收藏
得分:0 
//从1到76543210(八进制)共有多少个奇数?
//限制:不准出现重复数字,如0311虽然是
//奇数,但'1'出现了不止一次,故否决。
//答案:46972
#include <stdio.h>
int OK(long int x)
{
int i,dig[8];
for(i=0;i<8;i++)
dig[i]=0;
while(x)
{
dig[x%8]++;
x/=8;
}
for(i=0;i<8;i++)
if(dig[i]>1)return 0;
return 1;
}
main( )
{
long int x,count=0;
for(x=1;x<076543210;x+=2)//每次加2,确保x==奇数
{
if(OK(x))count++;
}
printf("满足要求的奇数共有%ld个\n",count);
}
2007-04-15 15:32
yu_hua
Rank: 2
等 级:论坛游民
帖 子:222
专家分:95
注 册:2006-8-10
收藏
得分:0 
//以下涉及的均为八进制整数
#include<stdio.h>
main( )
{
printf("八进制(下同)的1位奇数有%ld个\n",4L);
printf("不含重复数字的2位奇数有%ld个\n",6L*4);
printf("不含重复数字的3位奇数有%ld个\n",6L*6*4);
printf("不含重复数字的4位奇数有%ld个\n",6L*5*6*4);
printf("不含重复数字的5位奇数有%ld个\n",6L*4*5*6*4);
printf("不含重复数字的6位奇数有%ld个\n",6L*3*4*5*6*4);
printf("不含重复数字的7位奇数有%ld个\n",6L*2*3*4*5*6*4);
printf("不含重复数字的8位奇数有%ld个\n",6L*1*2*3*4*5*6*4);
}
2007-04-16 14:06
flyskyfile
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-4-14
收藏
得分:0 
回复:(gsbe1987)[求助]求0-7(1-8位数)所能组...

可以按如下办法解决,但是世间复杂度有点大。我考虑过,统计那么都的数,世间复杂度相对还是较大些。很愿意和你探讨这个题目。我的联系方式:flyskyfile@163.com

(C++语言)

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused
#include<iostream>
using namespace std;
int main(int argc, char* argv[])
{
for(int i=0;i<=7;++i)
for(int j=0;j<=7;++j)
for(int k=0;k<=7;++k)
for(int m=0;m<=7;++m)
for(int n=0;n<=7;++n)
for(int l=0;l<=7;++l)
for(int a=0;a<=7;++a)
for(int b=0;b<=7;++b)
{
if((10000000*i+1000000*j+100000*k+10000*m+1000*n+100*l+10*a+b)%2)cout<<(10000000*i+1000000*j+100000*k+10000*m+1000*n+100*l+10*a+b)<<endl;
}
return 0;
}
//---------------------------------------------------------------------------

2007-04-17 10:44
guosheng1987
Rank: 1
等 级:新手上路
帖 子:59
专家分:0
注 册:2007-4-16
收藏
得分:0 

顶26楼,跟我一样喜欢用穷举,简单就是美

2007-04-17 12:26
快速回复:[求助]求0-7(1-8位数)所能组成的奇数个数,想得快崩溃了还想不出 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016728 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved