码迷,mamicode.com
首页 > 编程语言 > 详细

C++ P1318 Jam的计数法(NOIP2006普及组复赛第3题)

时间:2016-11-12 19:43:02      阅读:470      评论:0      收藏:0      [点我收藏+]

标签:noi   char   计数   ace   pac   iostream   return   int   str   

#include<iostream>
#include<cstdio>
using namespace std;

int s,t,w,a[30],time=5;
char c[30];
bool ok;//ok表示是否找到规定集合;

void data_in()//使用位向量法;
{
  scanf("%d%d%d",&s,&t,&w);
  scanf("%s",c);
  for(int i=0;i<w;i++)
  a[c[i]-96]=1;
}

void DFS(int x,int len)
{
  if(x>t)
  {
    if(len==w)
    {
      if(!ok){ok=1;return;}
      if(time>0)
        {
          time--;
          for(int i=s;i<=t;i++) if(a[i]) printf("%c",i+96);
          printf("\n");
        }
      }
    return;
  }
  for(int i=1;i>=0;i--)if(len<=w)
  {
    if(ok)
    {
      a[x]=i;
      DFS(x+1,len+i);
    }
    if(!ok) if(a[x]==i)DFS(x+1,len+i);
    if(time==0) return;
  }
}

int main()
{
  // freopen("test.in","r",stdin);
  // freopen("test.out","w",stdout);
  data_in();
  DFS(s,0);
  return 0;
}

C++ P1318 Jam的计数法(NOIP2006普及组复赛第3题)

标签:noi   char   计数   ace   pac   iostream   return   int   str   

原文地址:http://www.cnblogs.com/Bear-Child/p/6057153.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!