(C#)ACM考试题的第二题
这个有点难啊。暂时这么做了做,不符合第二条要求。BBC的话。会有重复的。
BBC
BCB
BCB
CBB
虽然筛选不重复的肯定可以实现,不过这肯定不是题目原意。有时间需要重新做一下
BBC
BCB
BCB
CBB
虽然筛选不重复的肯定可以实现,不过这肯定不是题目原意。有时间需要重新做一下
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace ACM2
{
class Program
{
static void Main(string[] args)
{
FileStream fs = new FileStream(args[0], FileMode.Open, FileAccess.Read);
StreamReader sr = new StreamReader(fs);
string s=sr.ReadLine();
int n = int.Parse(s);
for (int i = 0; i < n; i++)
{
s = sr.ReadLine();
Console.WriteLine("Case " + (i + 1));
Deal(s);
}
}
static string Sort(string str)
{
char[] cs = str.ToCharArray(); char temp;
for(int i=0;i<cs.Length;i++)
for(int j=i;j<cs.Length;j++)
if (cs[i] > cs[j])
{
temp = cs[i];
cs[i] = cs[j];
cs[j] = temp;
}
return new string(cs);
}
static void Deal(string str)
{
string mstr = Sort(str);
string[] strs = DealF(mstr);
for (int i = 0; i < strs.Length; i++)
Console.WriteLine(strs[i]);
}
static string[] DealF(string str)
{
if (str.Length == 1)
return new string[] { str };
if (str.Length == 2)
{
string[] toRets = new string[2];
toRets[0] = str;
toRets[1] = str.Substring(1)+str.Substring(0,1);
return toRets;
}
string c=str.Substring(0,1);
string[] Ret = DealF(str.Substring(1));
string[] toRet = new string[Ret.Length *2];
for (int i = 0; i < toRet.Length; i++)
{
if (i < toRet.Length / 2)
toRet[i] = c + Ret[i];
else
toRet[i] = Ret[i - Ret.Length] + c;
}
return toRet;
}
}
}
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace ACM2
{
class Program
{
static void Main(string[] args)
{
FileStream fs = new FileStream(args[0], FileMode.Open, FileAccess.Read);
StreamReader sr = new StreamReader(fs);
string s=sr.ReadLine();
int n = int.Parse(s);
for (int i = 0; i < n; i++)
{
s = sr.ReadLine();
Console.WriteLine("Case " + (i + 1));
Deal(s);
}
}
static string Sort(string str)
{
char[] cs = str.ToCharArray(); char temp;
for(int i=0;i<cs.Length;i++)
for(int j=i;j<cs.Length;j++)
if (cs[i] > cs[j])
{
temp = cs[i];
cs[i] = cs[j];
cs[j] = temp;
}
return new string(cs);
}
static void Deal(string str)
{
string mstr = Sort(str);
string[] strs = DealF(mstr);
for (int i = 0; i < strs.Length; i++)
Console.WriteLine(strs[i]);
}
static string[] DealF(string str)
{
if (str.Length == 1)
return new string[] { str };
if (str.Length == 2)
{
string[] toRets = new string[2];
toRets[0] = str;
toRets[1] = str.Substring(1)+str.Substring(0,1);
return toRets;
}
string c=str.Substring(0,1);
string[] Ret = DealF(str.Substring(1));
string[] toRet = new string[Ret.Length *2];
for (int i = 0; i < toRet.Length; i++)
{
if (i < toRet.Length / 2)
toRet[i] = c + Ret[i];
else
toRet[i] = Ret[i - Ret.Length] + c;
}
return toRet;
}
}
}
张旋(zxsoft)
如对本文有什么疑问,请在下面写下留言,谢谢!