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;
            }

        }

    }

  • 相关阅读:
    zoj 3279 线段树 OR 树状数组
    fzu 1962 树状数组 OR 线段树
    hdu 5057 块状链表
    hdu3487 Play with Chain
    bzoj 1588营业额统计(HNOI 2002)
    poj2823 Sliding Window
    poj2828 Buy Tickets
    poj2395 Out of Hay
    poj3667 Hotel
    poj1703 Lost Cows
  • 原文地址:https://www.cnblogs.com/zxsoft/p/938082.html
Copyright © 2011-2022 走看看