posts - 3,  comments - 10,  trackbacks - 0
其中题目如下:
  给定一个整数,求出比其大的最小的不重复数字,不重复数字小于100000,不重复数字定义如下:

   任意两个相邻位上的数字均不相等。例如:1212,323,65是不重复数字,122,100,1123为重复数字。

实例:
  输入:99
  输出:101
 
  输入:65
  输出:67

我编的程序如下:
#include <iostream>

using namespace std;

int main()
{
  
int start=99;  //给出的数据,求其不重复数
  int sgnl=1;
  
int shu=-1;
  
int T;
  
int p;   

  
int a[]={-1,-2,-3,-4,-5,-6};
  
for (int i=start;i<100000;i++)
  
{    
    
//  sgnl=-1;
      T=i;
      p
=0;
      
while (T!=0)
      
{
          a[p]
=T%10;
          T
=T/10;
          
if (p>0)
          
{
              
if (a[p-1]==a[p])
              
{
                  sgnl
=0;
                  
break;
              }

          }
//  if (p>0)
          if (T==0)
              
if(sgnl!=0)
          
{
              shu
=i;
              i
=100000;
          }

       p
++;
      }
//while (T!=0)
      for (int y=0;y<6;y++)
      
{
          a[y]
=0-1;
      }

  }
//  for (int i=50;i<60;i++)

  cout
<<shu<<endl;  
  
return 0;
}
      开始的时候我认为上述代码是没有任何问题的,但是当每次运行程序的时候都得不到正确的结果。经过多次的调试,我发现在上述While循环中为sgnl赋值以后,到下面的判断处是,sgnl的值貌似不存在一样。
      然后我对程序做了一点修改,仅仅在for循环的里边加了一条语句:sgnl=-1;也就是上述代码注销的地方,然后再次运行程序,结果无误。
      虽然发现了问题,可是我并处清楚这是问什么,所以贴出来希望各位大虾能够帮忙解答一下。
      小弟不胜感激。
       期待中。
posted @ 2011-05-28 13:11 hjl 阅读(2088) | 评论 (8)编辑 收藏
其中题目如下:
  给定一个整数,求出比其大的最小的不重复数字,不重复数字小于100000,不重复数字定义如下:

   任意两个相邻位上的数字均不相等。例如:1212,323,65是不重复数字,122,100,1123为重复数字。

实例:
  输入:99
  输出:101
 
  输入:65
  输出:67

我编的程序如下:
#include <iostream>

using namespace std;

int main()
{
  
int start=99;  //给出的数据,求其不重复数
  int sgnl=1;
  
int shu=-1;
  
int T;
  
int p;   

  
int a[]={-1,-2,-3,-4,-5,-6};
  
for (int i=start;i<100000;i++)
  
{    
    
//  sgnl=-1;
      T=i;
      p
=0;
      
while (T!=0)
      
{
          a[p]
=T%10;
          T
=T/10;
          
if (p>0)
          
{
              
if (a[p-1]==a[p])
              
{
                  sgnl
=0;
                  
break;
              }

          }
//  if (p>0)
          if (T==0)
              
if(sgnl!=0)
          
{
              shu
=i;
              i
=100000;
          }

       p
++;
      }
//while (T!=0)
      for (int y=0;y<6;y++)
      
{
          a[y]
=0-1;
      }

  }
//  for (int i=50;i<60;i++)

  cout
<<shu<<endl;  
  
return 0;
}
      开始的时候我认为上述代码是没有任何问题的,但是当每次运行程序的时候都得不到正确的结果。经过多次的调试,我发现在上述While循环中为sgnl赋值以后,到下面的判断处是,sgnl的值貌似不存在一样。
      然后我对程序做了一点修改,仅仅在for循环的里边加了一条语句:sgnl=-1;也就是上述代码注销的地方,然后再次运行程序,结果无误。
      虽然发现了问题,可是我并处清楚这是问什么,所以贴出来希望各位大虾能够帮忙解答一下。
      小弟不胜感激。
       期待中。
posted @ 2011-05-28 13:11 hjl 阅读(2088) | 评论 (8)编辑 收藏

本程序采用简单的递归调用来实现对大数的划分。
程序源代码:
#include<iostream>
using namespace std;
void main()
{
 int q(int n,int m);
 int a;
    cout<<"请输入你要划分的整数:"<<endl;
 cin>>a;
 cout<<q(a,a)<<endl;
}
//以下代码为程序的关键部分   计划分大整数的算法

int q(int n,int m)
{
   if(n<1||m<1)
    return 0;
   if(n==1||m==1)
    return 1;
   if(n<m)
    return q(n,n);
   if(n==m)
    return (q(n,m-1)+1);
   return q(n,m-1)+q(n-m,m);
}

posted @ 2010-04-12 22:55 hjl 阅读(415) | 评论 (2)编辑 收藏
仅列出标题  
<2024年12月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

常用链接

留言簿

随笔档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜