| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 737 人关注过本帖
标题:这是我写的一个集产生随机字母,二分技术查找,递归全排序的程序
取消只看楼主 加入收藏
lsd98
Rank: 2
等 级:论坛游民
帖 子:51
专家分:26
注 册:2010-3-30
结帖率:76.92%
收藏
已结贴  问题点数:10 回复次数:4 
这是我写的一个集产生随机字母,二分技术查找,递归全排序的程序
#include<iostream>
#include<time.h>
using namespace std;
const int N=100;
int n,k=0;
char list[N];
int by(const char& x)
{
 int l=0;int r=n;
 while(l<=r)
 {
  int middle=(l+r)/2;
  if(x==list[middle]) return middle;
  if(x>list[middle]) l=middle+1;
  else r=middle-1;
 }
 return -1;
}
void set()
{
 int i,j,k,t,q;
 char temp;
 cout<<"确定产生随机数个数n=";
 cin>>n;
 srand( (unsigned)time( NULL ) );
 for(i=0;i<n;i++)
       list[i]=rand()%26+97;
 for(k=0;k<n-1;k++)
 { q=k;
  for(j=k+1;j<n;j++)
   if(list[j]<list[q]) q=j;
   if(q!=k)
   {temp=list[q];list[q]=list[k];list[k]=temp;}
 }
   cout<<" 产生的随机数为:"<<endl;
   for(t=0;t<n;t++)
   cout<<list[t]<<" ";
   cout<<endl;
}
void perm(char list[],int k)
{
 if(k==n)
 {
  for(int i=0;i<n;i++)
   cout<<list[i];
  cout<<endl;
 }
  else
   for(int i=k;i<n;i++)
   {
    swap(list[k],list[i]);
     perm(list,k+1);
    swap(list[k],list[i]);
   }
}
inline swap(char& a,char& b)
{
 char temp=a;a=b;b=temp;
}
int main()
{
 char x;
 set();
 cout<<"输入查找元素x=";cin>>x;
 int p=by(x);
 if(p==-1)
  cout<<"未找到x"<<endl;
 else
  cout<<"所找元素在第"<<p+1<<"个位置!"<<endl;
 cout<<"全排列结果:"<<endl;
 //perm(list,k);
 return 0;
}
现在有两个问题,1.rand()产生的随机数有重复!2.全排列函数无法处理有相同元素时全排列结果有重复问题!
请高手们指点迷津,寻求最优算法!!!
搜索更多相关主题的帖子: 随机 字母 递归 技术 
2010-04-01 12:37
lsd98
Rank: 2
等 级:论坛游民
帖 子:51
专家分:26
注 册:2010-3-30
收藏
得分:0 
没有人帮我么???????
2010-04-01 17:28
lsd98
Rank: 2
等 级:论坛游民
帖 子:51
专家分:26
注 册:2010-3-30
收藏
得分:0 
这样算法效率会不会很低,有没有人帮我解决上面的第二个问题?排序问题

[ 本帖最后由 lsd98 于 2010-4-2 15:37 编辑 ]
2010-04-02 15:36
lsd98
Rank: 2
等 级:论坛游民
帖 子:51
专家分:26
注 册:2010-3-30
收藏
得分:0 
兄弟 这个不错!现在全排列函数无法处理有相同元素时全排列结果有重复问题!该什么弄?
2010-04-02 22:40
lsd98
Rank: 2
等 级:论坛游民
帖 子:51
专家分:26
注 册:2010-3-30
收藏
得分:0 
不是 我是说我上面的全排列函数
void perm(char list[],int k)
如何拥有处理有相同元素数列全排列而不出现重复结果的功能,比如
输入aacc
输出
aacc
acac
acca
caac
caca
ccaa
这样的效果;方法还是上面的递归排列的方法 ;如何处理!
2010-04-02 23:02
快速回复:这是我写的一个集产生随机字母,二分技术查找,递归全排序的程序
数据加载中...
 
   



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

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