把 这6个数 放到一个数组里,使用 Random rad = new Random(); 产生1-6的随机数,根据随机数去数组里的值拼接。
解决方案 »
- 如何让COM停止调用我的c#程序?
- 如何在System.Timers.Timer所触发的事件中设置timer.Enaled,timer.Interval属性?
- 关于NHibernate 水晶报表的问题
- OpenFileDialog能不能即能选中文件又能选中文件夹
- 关于用户访问方面的.请各位指点了.谢谢
- 请问网站的B/S结构和用友金蝶的一般B/S结构财务软件有什么区别?
- 自动注册多个网站的程序代码或实现思路
- (Help)请教串口同步异步的问题。。。。
- c#&.net论坛,cookies 取出的值为“?”
- Table(<asp:table>)控件新增行的问题(急)?
- WPF,添加了类库,为什么不能using
- C#窗体连接数据库的问题(新手求教!)
LZ需要的是一堆数字 然后查看乱序是多少个
建议LZ可以这样 这样最优不优不清楚 先满足了需求然后再优化 你看怎么样建立首先 当然会涉及到第一位是0的情况 这种就需要单独处理了。先排除这种情况进行操作 按这堆数字的位数循环 如6位那么 外层循环6次 内层循环就把当前数字与内层循环数进行对换位置
最后把这个数字放到数组里面 如此循环完毕之后就形成了一个包含同种情况的数字的数组。如此再次循环把该数组剃重 最后的数据就是你需要的。
如果你觉得这个方案可行那么我们在继续讨论。不行的话就算了
var maxcount=50; //用户输入的需要生成的数量
var listNumber=new Array();
for(var a=0;a<6;a++){
for(var b=0;b<6&&b!=a;b++){
for(var c=0;c<6&&c!=b;c++){
for(var d=0;d<6&&d!=c;d++){
for(var e=0;e<6&&e!=d;e++){
for(var f=0;f<6&&f!=e;f++){ //id=TNum1-6 分别为用户输入的6个数字
var value=$("#TNum"+(a+1)).val()+$("#TNum"+(b+1)).val()+$("#TNum"+(c+1)).val()
+$("#TNum"+(d+1)).val()+$("#TNum"+(e+1)).val()+$("#TNum"+(f+1)).val();
var isbreak=false;
for(var j=0;j<listNumber.length;j++){
if(listNumber[j]==value){
isbreak=true;
break;
}
}
if(isbreak){
continue;
}
listNumber.push(value);
i=i+1;
if(i>maxcount){
if (maxcount % 5 != 0) //结束
{
htmlstr += "</div>";
}
document.getElementById('preview').innerHTML = htmlstr;
return;
}
if (i % 5 == 1) //换行
{
htmlstr += "<div class='tr'>";
}
htmlstr += "<input name=\"TZNum\" class=\"number\" type=\"text\" maxlength=\"6\" value=\"" + value + "\" onkeyup=\"if(event.keyCode !=37 && event.keyCode != 39) value=value.replace(/\\D/g,'');\" />"
if (i % 5 == 0)
{
htmlstr += "</div>";
}
}
}
}
}
}
}
if (NCount % 5 != 0) //结束
{
htmlstr += "</div>";
}
document.getElementById('preview').innerHTML = htmlstr;
var listNumber=new Array();
for(var a=0;a<6;a++){
for(var b=0;b<6&&b!=a;b++){
for(var c=0;c<6&&c!=b;c++){
for(var d=0;d<6&&d!=c;d++){
for(var e=0;e<6&&e!=d;e++){
for(var f=0;f<6&&f!=e;f++){
var value=(a+1).toString()+(b+1).toString()+(c+1).toString()+(d+1).toString()+(e+1).toString()+(f+1).toString();
var isbreak=false;
for(var j=0;j<listNumber.length;j++){
if(listNumber[j]==value){
isbreak=true;
break;
}
}
if(isbreak){
continue;
}
listNumber.push(value);
i=i+1;
if(i>maxcount){
return;
}
}
}
}
}
}
}
for(int i=0;i<a.length;i++){
for(int j=0;j<a.length;j++){
//这里把 a 在i位置的数 与 a在j位置的数进行互相替换当然得重新申明一个变量接收这2个处理而不影响上面的双重循环
//把换位过后的数保存到数组
}
}
//双重循环后就获取到一个新的数组 这里装满了 a各种位置的 数据 把这个数组在进行循环排出相同的数据 这个数组里面的就是你想要的了
其实2楼那个链接里面有具体代码 。。我是手写的 写多了怕出错
{
static void Main(string[] args)
{
string s,
str = "";
List<string> Data = new List<string>();
s = Console.ReadLine();
for (int num1 = 0; num1 < 6; num1++)
for (int num2 = 0; num2 < 6; num2++)
{
if (num2 == num1) continue;
for (int num3 = 0; num3 < 6; num3++)
{
if ((num3 == num2) || (num3 == num1)) continue;
for (int num4 = 0; num4 < 6; num4++)
{
if ((num4 == num3) || (num4 == num2) || (num4 ==num1)) continue;
for (int num5 = 0; num5 < 6; num5++)
{
if ((num5 == num4) || (num5 == num3) || (num5 == num2) || (num5 == num1)) continue;
for (int num6 = 0; num6 < 6; num6++)
{
if ((num6 == num5) || (num6 == num4) || (num6 == num3) || (num6 == num2) || (num6 == num1)) continue;
str = "" + s[num1] + s[num2] + s[num3] + s[num4] + s[num5] + s[num6];
if (!Data.Contains(str))
{
Data.Add(str);
}
}
}
}
}
}
foreach (string Item in Data)
Console.WriteLine(Item);
Console.ReadKey();
}
}似乎用递归实现简洁些。
{
string strRet = "";
string strSeek = new string(seek.ToCharArray().Distinct().ToArray());
Random rnd = new Random();
for (int i = 0; i < 6; i++)
{
string strItem = strSeek.ToCharArray()[rnd.Next(1, strSeek.ToCharArray().Length) - 1].ToString();
strRet += strItem;
int intPOS;
intPOS = seek.IndexOf(strItem)+1;
seek = seek.Insert(intPOS, " ");
seek = seek.Replace(strItem+" ", "");
strSeek = new string(seek.ToCharArray().Distinct().ToArray());
}
Console.Write(strRet);
return strRet;
}
{
char[] charSeek = seek.ToCharArray().Distinct().ToArray();
int ret = fact(seek.Length);
for(int i=0;i<charSeek.Length;i++)
{
ret /= fact(seek.Length - seek.Replace(charSeek[i].ToString(), "").Length);
}
Console.WriteLine(ret);
return ret;
} static int fact(int n)
{
if (n < 2)
return 1;
else
{
int ret = 1;
for (int i = 1; i <= n; i++)
ret *= i;
return ret;
}
}