int N = 5; for (int i = 0; i < (1 << N); i++) { Console.WriteLine(string.Format("{0:D"+ N +"}", Convert.ToInt32(Convert.ToString(i, 2)))); } 呵呵,不好意思,刚才漏了个细节
public void PrintAll(int n) { if (n > 0) { double row = Math.Pow(2, n); for (int i = 0; i < row ; i++) { int shang = i; for (int j = 0; j < n; j++) { int yushu = shang % 2; shang /= 2; if (shang != 0) PrintOne(yushu, false); else { if (j == n - 1) PrintOne(yushu, true); else PrintOne(yushu, false); } } } } } private void PrintOne(int n, bool line) { if (!line) Console.Write(n + " "); else Console.WriteLine(n); } 测试通过,不过还没有考虑到效率的问题,当n比较大时计算的时间就很长了
int N = 10; List<int> list = new List<int>; //存放所有的结果 for(int i=0; i<N; i++) { list.Add(Convert.ToInt32(i.ToString(),2); }
private void button1_Click(object sender, EventArgs e) { //Form1 frm = new Form1(); //frm.TopLevel = false; //this.panel1.Controls.Add(frm); //frm.Dock = DockStyle.Fill; //frm.Show(); //MessageBox.Show(B.Y.ToString());//A.X.ToString() + List<string > s = CaculateNumber(5); s.Sort(); foreach (string str in s) { MessageBox.Show(str); } } private List<string> CaculateNumber(int n) { List<string> s = new List<string>(); if (n == 1) { s.Add("0"); s.Add("1"); } else { for (int i = 0; i < 2; i++) { foreach (string str in CaculateNumber(n - 1)) { s.Add(str + i.ToString()); } } } return s; }
private void button1_Click(object sender, EventArgs e) { //Form1 frm = new Form1(); //frm.TopLevel = false; //this.panel1.Controls.Add(frm); //frm.Dock = DockStyle.Fill; //frm.Show(); //MessageBox.Show(B.Y.ToString());//A.X.ToString() + List<string > s = CaculateNumber(5); //s.Sort(); foreach (string str in s) { MessageBox.Show(str); } } private List<string> CaculateNumber(int n) { List<string> s = new List<string>(); if (n == 1) { s.Add("0"); s.Add("1"); } else { foreach (string str in CaculateNumber(n - 1)) { for (int i = 0; i < 2; i++) { s.Add(str + i.ToString()); } } } return s; }
int N = 20; for (int i = 0; i < (1 << N); i++) { Console.WriteLine(string.Format("{0:D"+ N +"}", Convert.ToUInt64(Convert.ToString(i, 2)))); } 这样可以稍微大点你的方法答案不对when n = 500000 10000 01000 11000 00100 10100 01100 11100 00010 10010 01010 11010 00110 10110 01110 11110 00001 10001 01001 11001 00101 10101 01101 11101 00011 10011 01011 11011 00111 10111 01111 11111 请按任意键继续. . .
int N = 20; for (int i = 0; i < (1 << N); i++) { Console.WriteLine(Convert.ToString(i,2).PadLeft(N,'0'));
int N = 5;
for (int i = 0; i < (1 << N); i++)
{
Console.WriteLine(string.Format("{0:D"+ N +"}", Convert.ToInt32(Convert.ToString(i, 2))));
}
呵呵,不好意思,刚才漏了个细节
{
if (n > 0)
{
double row = Math.Pow(2, n);
for (int i = 0; i < row ; i++)
{
int shang = i;
for (int j = 0; j < n; j++)
{
int yushu = shang % 2;
shang /= 2;
if (shang != 0)
PrintOne(yushu, false);
else
{
if (j == n - 1)
PrintOne(yushu, true);
else
PrintOne(yushu, false);
}
}
}
}
} private void PrintOne(int n, bool line)
{
if (!line)
Console.Write(n + " ");
else
Console.WriteLine(n);
}
测试通过,不过还没有考虑到效率的问题,当n比较大时计算的时间就很长了
int N = 10;
List<int> list = new List<int>; //存放所有的结果
for(int i=0; i<N; i++)
{
list.Add(Convert.ToInt32(i.ToString(),2);
}
private void button1_Click(object sender, EventArgs e)
{
//Form1 frm = new Form1();
//frm.TopLevel = false;
//this.panel1.Controls.Add(frm);
//frm.Dock = DockStyle.Fill;
//frm.Show();
//MessageBox.Show(B.Y.ToString());//A.X.ToString() +
List<string > s = CaculateNumber(5);
s.Sort();
foreach (string str in s)
{
MessageBox.Show(str);
}
} private List<string> CaculateNumber(int n)
{
List<string> s = new List<string>();
if (n == 1)
{
s.Add("0");
s.Add("1");
}
else
{
for (int i = 0; i < 2; i++)
{
foreach (string str in CaculateNumber(n - 1))
{
s.Add(str + i.ToString());
}
}
}
return s;
}
private void button1_Click(object sender, EventArgs e)
{
//Form1 frm = new Form1();
//frm.TopLevel = false;
//this.panel1.Controls.Add(frm);
//frm.Dock = DockStyle.Fill;
//frm.Show();
//MessageBox.Show(B.Y.ToString());//A.X.ToString() +
List<string > s = CaculateNumber(5);
//s.Sort();
foreach (string str in s)
{
MessageBox.Show(str);
}
} private List<string> CaculateNumber(int n)
{
List<string> s = new List<string>();
if (n == 1)
{
s.Add("0");
s.Add("1");
}
else
{
foreach (string str in CaculateNumber(n - 1))
{
for (int i = 0; i < 2; i++)
{
s.Add(str + i.ToString());
}
}
}
return s;
}
int N = 20;
for (int i = 0; i < (1 << N); i++)
{
Console.WriteLine(string.Format("{0:D"+ N +"}", Convert.ToUInt64(Convert.ToString(i, 2))));
}
这样可以稍微大点你的方法答案不对when n = 500000
10000
01000
11000
00100
10100
01100
11100
00010
10010
01010
11010
00110
10110
01110
11110
00001
10001
01001
11001
00101
10101
01101
11101
00011
10011
01011
11011
00111
10111
01111
11111
请按任意键继续. . .
for (int i = 0; i < (1 << N); i++)
{
Console.WriteLine(Convert.ToString(i,2).PadLeft(N,'0'));
}%>