_L.Y.H._ 2022-01-24 11:35 采纳率: 70%
浏览 44
已结题

在某些情况中,为什么程序突然中断?

问题
【搜索与回溯算法】生成字符串 (Standard IO)
时间限制: 1000 ms 空间限制: 262144 KB 具体限制

题目描述:
假设一个字符串只由字符”0”、”1”、‘’组成,其中字符‘’表示该字符可由字符”0”或”1”替代。

现有一些字符串,根据这些字符串生成所有可生成的字符串。

注意后一个例子中”*01”并没有生成新的字符串。

输入
第一行是两个整数M,N(1≤M≤15,0≤N≤2500)。M表示字符串的长度,N表示字符串的个数。
以下N行每行各有一个字符串。各行的行首、行末没有多余的空格。

输出
一行,为一个整数,Total表示所能生成的字符串的个数。

样例输入
2 3
10
1
0

样例输出
4

代码:

#include<bits/stdc++.h>
using namespace std;
string a[2505];
int n,m,t,len,flag;
bool visit[900000005];
void dg(int x,int i)
{
    if(x>len)
    {
        long long qn=atol(a[i].c_str());
        if(visit[qn]==0)
        {
            t++;
            visit[qn]=1;
            cout<<1;
        }
    }
    else
    {
        
        if(a[i][x]=='*')
        {
            a[i][x]='1';
            dg(x+1,i);
            a[i][x]='0';
            dg(x+1,i);            
            a[i][x]='*';
        }
        else dg(x+1,i);
    }
}
int main()
{
    cin>>m>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];    
        len=a[i].size();
        dg(0,i);
    }
    cout<<t;
}



  • 写回答

1条回答 默认 最新

  • orange4reg 2022-01-24 12:51
    关注

    假设bool占用1字节并按1字节对齐,900000005字节/1024/1024/1024=0.8381903218gb,小程序大内存。如果按照4字节对齐,那还真不得了。系统会如何处理我不知道,但是不应该这样写。最后,抱歉,没有看明白题目。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 2月3日
  • 已采纳回答 1月26日
  • 修改了问题 1月24日
  • 修改了问题 1月24日
  • 展开全部

悬赏问题

  • ¥15 latex投稿显示click download
  • ¥15 请问读取环境变量文件失败是什么原因?
  • ¥15 在若依框架下实现人脸识别
  • ¥15 网络科学导论,网络控制
  • ¥100 安卓tv程序连接SQLSERVER2008问题
  • ¥15 利用Sentinel-2和Landsat8做一个水库的长时序NDVI的对比,为什么Snetinel-2计算的结果最小值特别小,而Lansat8就很平均
  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?