动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
电脑书籍下载:程序设计书籍 | 数据库教程书籍 | 平面与多媒体书籍 | 网络通讯书籍 | 系统管理书籍 | 网络安全书籍 | 认证考试书籍
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > C/C++教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ C/C++教程 ]的信息



本月文章推荐
.罗云彬VxD教程--虚拟机管理器.
.TServerSocket和TClientSocket的.
.图文例解C++类的多重继承与虚拟继.
.i++,i--的前置,后置++i,--i的详细.
.验C++中接口与实现分离的技术.
.C程序开发初级讲座之分支结构.
.C语言程序设计(第7章 结构体与共.
.在未来时态下开发C++程序.
.轻轻松松从C一路走到C++系列文章.
.瘦身前后——兼谈C++语言进化.
.字符串近似匹配算法.
.数据结构学习(C++)之图.
.高质量C++/C编程指南 --&nb.
.用C++Builder设计动态网页按钮.
.C++程序中导出Word文档的简易方法.
.罗云彬VxD教程--DeviceIoControl.
.VC命名管道通信的实现(组图).
.C语言教程第一章: C语言概论.
.C++的iostream标准库介绍(1).
.C程序设计基础之多维数组的指针变.

C程序设计例解(03)

发表日期:2008-3-8 |



03. 找一个最小的自然数,使它等于不同的两组三个自然数的三次幂之和,即找最小的x,使得:
x=a*a*a+b*b*b+c*c*c+d*d*d+e*e*e+f*f*f
其中,a,b,c,d,e,f都是自然数,a<=b<=c<=d<=e<=f; [a,b,c]!=[d,e,f]
解:
利用上一问题的求解思想,上一问题在正方形平面下三角区内找解,本题在正立方体的下三角棱内找解。记i为三角棱体的平面,j为某平面的行,k为某行上的列。当前考察的下三角棱体的范围由最上平面至最下平面控制;对应每个平面的下三角区域,在每个下三角区域内当前待考查的行可由行的下界和上界控制,每个有效行上的候选列由其当前列来表示。因此有如下解法:
算法---找一个最小的自然数x,使它等于不同的两组三个自然数的三次幂之和
{
以三角棱体的顶点为最初候选者;
为最初寻找平面设定行的变化范围和列的初值;
do
{
保存上一个候选者;
if(当前候选者在最下平面)
{
寻找平面范围的最下平面向下进一层;
为新平面设定行的变化范围;
}
if(在最上平面最下角点找到候选者)
寻找平面范围的最上平面向下进一层;
else
{
if(在第一列找到候选者)
{
当前平面的行的变化上增1;
置当前平面的最高行的列为1;
}
if(在对角线上找到候选者)
当前平在的行的变化下界增1;
else
调整当前平面当前行的列号值;
}
在当前最上平面至当前最下平面范围内寻找最小值的候选者;
}while(两候选者对应的值不相等);
输出解;
}
因每个平面有行变化的下界和上界,程序分别用两个一维数组来存贮;每个平面的每行都有一个当前列,程序用一个二维数组来存贮;为避免反复计算一个整数的三次幂,另引入一个一维数组,对应第i下标位置存贮i*i*i。令当前找到的候选者为i1,j1,k表示在i1平面的第j1行的k1列找到的候选者。因候选者限制在三角棱内,i1,j1,k1满足条件:
i1>=j1>=k1
当候选者在最下平面时,则最下平面向下进一层,并为新平面设定行的变化范围和对应列号;当前最上平面的最下角点找到候选者时,最上平面向下进一层;当在第一列找到候选者时,当前平面的行的上界增,并为新的行设定初始列号;当在某行的对角线上找到候选者时,该行不应该再被考虑,当前平面的行的下界增1;其它情况,当前行的下一列将会被考虑,为该行调整当前列。在调整当前平面的行的下界和上界时,应不能超过当前平面号。为在三角棱体的当前有效平面内找最小值的候选者,先假定最上平面的最小行的当前列为下一个候选者,然后自最上平面至最下平面,每个平面自最小行至最大行,寻找最小值所在平面号、行号和列号。

程序代码如下:
#include<stdio.h>
#define N 100
void main()
{
int i,j,il,ih,i0,j0,k0,i1,j1,k1;
int jl[N],jh[N]; /*第i层平面的行的变化范围,自jl[i]至jh[i]*/
int k[N][N]; /*第i层平面中,对应行j,当前的列号值为k[i][j]*/
int p[N], min; /*p[i]=i*i*i*/
i1=1;j1=1;k1=1; /*首先只局限下三角棱体的顶点*/
il=1;ih=1; /*预置i的变化范围初值il<=i<=ih*/
jl[1]=1;jh[1]=1; /*对应i层平面的行的变化范围*/
k[il][jl[il>=1; /*第i层平面中,对应行的列的初值*/
p[1]=1;
do
{
min=p[i1]+p[j1]+p[k1];
i0=i1;j0=j1;k0=k1;
if(i1==ih) /*当前候选者在ih平面,则ih增1*/
{
ih++;
p[ih]=ih*ih*ih;
/*为ih平面设定j的变化范围和对应k值*/
jl[ih]=1;jh[ih]=1;k[ih][1]=1;
}
if(i1==il&&j1==il&&k1==il)
il++; /*在il平面最下角点找到候选者,il增1*/
else
{
if(k1==1&&jh[i1]<i1)
{ /*在第一列找到候选者,i1平面的行的上界增1*/
jh[i1]++;
k[i1][jh[i1>=1;
}
if(k1==j1&&jl[i1]<i1)
jl[i1]++; /*在对角线上找到候选者,il平面的行的下界增1*/
else
k[i1][j1]++; /*调整i1平面当前行的列号*/
}
i1=il; /*预定最上平面的最小行的当前列为下一个候选者*/
j1=jl[i1];
k1=k[i1][j1];
for(i=il;i<=ih;i++) /*寻找最小值所在平面号、行号和列号*/
{
for(j=jl[i];j<=jh[i];j++)
if(p[i]+p[j]+p[k[i][j><p[i1]+p[j1]+p[k1])

{
i1=i;j1=j;k1=k[i][j];
}
}
}while(p[i1]+p[j1]+p[k1]!=min&&ih!=N);
if(p[i1]+p[j1]+p[k1]==min)
printf("%4d=%2d^3+%d^3+%d^3=%2d^3+%d^3+%d^3\n",min,i0,j0,k0,i1,j1,k1);
else printf("The %d is too small.\n",N);
}

程序运行结果如下:
251 = 5^3 + 5^3 + 1^3 = 6^3 + 3^3 + 2^3


上一篇:C程序设计例解(05) 人气:177
下一篇:C程序开发经典实例之8 人气:173
浏览全部C/C++的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-7-6 飞天论坛FTBBS ASP v6.3 Build 0
2008-7-6 飞天论坛FTBBS ASP v6.3 Build 0
2008-7-6 飞天论坛FTBBS ASP v6.8 Build 0
2008-7-6 讯息内容管理系统 v2.1
2008-7-6 三五电影程序 v2.0
2008-7-6 神鹰腾讯小说小偷 v3.0
2008-7-6 EasyIDE Framework v1.0 Build 2
2008-7-6 品告CMS系统(电影版) v0.9
2008-7-6 QQ自动登录器 C# 源码 v1.0
2008-7-5 AgileMessenger即时通讯工具 v1.
2008-7-5 GoodCalculator2.0版固件计算器
2008-7-5 RepoName源地址搜索工具 v1.21b
2008-7-5 AgileMessenger即时通讯工具 v1.
2008-7-5 TouchCopy多媒体管理软件 v3.13完
2008-7-5 VideosTone视频铃声 v1.1汉化破解
2008-7-5 TouchPad触摸板 v4.44破解版
2008-7-5 VideosTone破解补丁 v1.0
2008-7-5 Feeds GoogleReader客户端 v0.4.3


  发表评论
姓 名: 验证码:
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報