zoukankan      html  css  js  c++  java
  • (C#)ACM考试题的第二题

    这个有点难啊。暂时这么做了做,不符合第二条要求。BBC的话。会有重复的。
    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;
            }

        }

    }

  • 相关阅读:
    PHP date 格式化一个本地时间/日期
    Unix时间戳(Unix timestamp)转换工具
    Ubuntu下搭建NodeJS+Express WEB开发框架
    高手指南PHP安装配置
    thinkphp系统常量与自定义常量
    UDP 构建p2p打洞过程的实现原理(持续更新)
    iOS标准时间与时间戳相互转换
    java 时间戳和PHP时间戳 的转换
    Windows与Linux/Mac系统时间不一致的解决方法
    推荐25款php中非常有用的类库
  • 原文地址:https://www.cnblogs.com/zxsoft/p/938082.html
Copyright © 2011-2022 走看看