广告广告
  加入我的最爱 设为首页 风格修改
首页 首尾
 手机版   订阅   地图  繁体 
您是第 3973 个阅读者
 
发表文章 发表投票 回覆文章
  可列印版   加为IE收藏   收藏主题   上一主题 | 下一主题   
JasonQQ
数位造型
个人文章 个人相簿 个人日记 个人地图
路人甲
级别: 路人甲 该用户目前不上站
推文 x0 鲜花 x0
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片
推文 x0
[C/C++][讨论] 3N+1的问题…
题目解说:http://luckycat.kshs.kh.edu.tw/homework/q100.htm
---------------------------------------------------------------------------------------------------------------------
我写的程式如下:
#include <iostream>
using namespace std;

//Three_N_Plus_One开始
void Three_N_Plus_One(int i)
{ //用来列印数列
if(i <= 0)
{
cout << "数字小于1,离开..." << endl;
abort(); /* 立刻终止程式的函式 */
}

do
{
if(i == 1)
{
cout << i << endl;
break;
}
else if(i%2 == 0)
{
cout << i << " ";
i /= 2;

// 改善起点
if(i == 1)
{
cout << i << endl;
break;
}
// 改善终点

Three_N_Plus_One(i);
}
else
{
cout << i << " ";
i = 3 * i + 1;
Three_N_Plus_One(i);
}
}
while(i <= 1);
}
//T ..

访客只能看到部份内容,免费 加入会员 或由脸书 Google 可以看到全部内容




献花 x0 回到顶端 [楼 主] From:未知地址 | Posted:2007-07-31 14:02 |
kioko
数位造型
个人文章 个人相簿 个人日记 个人地图
路人甲
级别: 路人甲 该用户目前不上站
推文 x0 鲜花 x1
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

复制程式
#include <stdio.h>
#include <iostream> 
#include <stdlib.h> 
#include <conio.h>
#include <string>
using namespace std ; 

main (){
       int n, length, max;
       printf("3N+1 演算法\n");
       printf("\n");
       printf("请输入任一值: ");
       scanf("%d",&n);
       length=0; 
       while(1){
              printf(" %d",n);
              if(n==1){
                     length++; 
                     break;       
              } 
              else if(n%2==0){
                     length++; 
                     n=n/2;       
              }
              else if(n%2==1){
                     length++; 
                     n=3*n+1; 
              }        
       } 
       printf("\n");
       printf("循环长度为: %d\n",length); 
       
       printf("===============================================\n"); 
       max=0; 
       int head, end, length_count;
       printf("请输入开头至结尾的代表数字: ");
       scanf("%d %d", &head, &end);
       for(int i=head; i<=end; i++){
              length=0;
              n=i; 
              printf("这是第 %d 个",n); 
              while(1){ 
                     printf(" %d",n);
                     if(n==1){
                            length++;
                            break;       
                     } 
                     else if(n%2==0){
                            length++; 
                            n=n/2;       
                     }
                     else if(n%2==1){
                            length++; 
                            n=3*n+1; 
                     }        
              } 
              printf("\n");
              if(max<length){
                     max=length; 
              } 
              else{
                     max=max; 
              } 
              printf("循环长度最长为: %d 次\n",max); 
       } 
       getch();       
}

3N+1 的解题

XD ...


献花 x0 回到顶端 [1 楼] From:台湾 | Posted:2009-09-15 14:46 |

首页  发表文章 发表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.013200 second(s),query:16 Gzip disabled
本站由 瀛睿律师事务所 担任常年法律顾问 | 免责声明 | 本网站已依台湾网站内容分级规定处理 | 连络我们 | 访客留言