闲来没事做,写个模拟中奖的生成程序,程序的思路是用随机数产生器随机产生两个字符串数组,每个字符串数组又分为N个子字符串,如果这两个组里面有任何俩个子字符串是相同的,就作为中奖号码 #include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
vector
void product(vector
{
for(int s=0;s { string s; char ch; for(int i=0;i { int x=rand()%10; ch=x+48; s+=ch; } sets.push_back (s);// 将字符串放入字符集中 } } bool CompareStrings(string &s1,string &s2) { bool tag=true; if(s1.size() ==s2.size()) { for(int i=0;i { if(s1[i]!=s2[i]) { tag=false; break; } } } else tag=false; return tag; } int main() { int StringLength=0;//用来指定每个字符串的长度 int StringsNumbers=0;//用来指定2个字符集中字符串的个数 cout<<"请输入字符串集的字符串的个数:"< cin>>StringsNumbers; assert(StringsNumbers>0); cout<<"请输入每个字符串的长度:"< cin>>StringLength; assert(StringLength>0); srand((unsigned)time(0));//设定种子为时间 product(sets1,StringLength,StringsNumbers); product(sets2,StringLength,StringsNumbers); stable_sort(sets1.begin (),sets1.end ());//对字符集排序 stable_sort(sets2.begin (),sets2.end ()); // cout<<"集合1的字符串为:"< // vector // for( ;iter1!=sets1.end ();++iter1) [Page] // cout<<*iter1< // cout<<"集合2的字符串为:"< // vector // for( ;iter2!=sets2.end ();++iter2) // cout<<*iter2< int i=0; int j=0; int k=0; while(i { if(sets1[i][k] { ++i; k=0; } else if(sets1[i][k]>sets2[j][k]&&j { ++j; k=0; } else//如果sets1[i][k]==sets2[j][k],那么比较sets1[i][k+1]和sets2[j][k+1] { ++k; if(k==StringLength&&i { sets3.push_back (sets1[i]); if(i ++i; if(j ++j; k=0; } }//else }//while if(sets3.empty ()) cout<<"没有公共字符串! "< else { cout<<"公共字符串为:"< vector for(;it!=sets3.end ();++it) cout<<*it< } return 0; }
免责声明:
本站系本网编辑转载,会尽可能注明出处,但不排除无法注明来源的情况,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本网联系, 来信: liujun@soft6.com 我们将在收到邮件后第一时间删除内容!
[声明]本站文章版权归原作者所有,内容为作者个人观点,不代表本网站的观点和对其真实性负责,本站拥有对此声明的最终解释权。