萌新刚学C++,求助

灌水区

Purslane @ 2021-08-22 11:05:50

Rt , 感觉自己和刚学没有区别 .

我写了一个结构体 , 为什么里面一个数组开了 3 \times 10 ^ 7 就挂了 ?

code :

struct Trie {
    int idx=1,trie[MAXN][26];
    inline int insert(string k) {
        int root=1;
        for(int i=0;i<k.size();i++) {
            int val=k[i]-'a';
            if(trie[root][val]==0) trie[root][val]=++idx;
            root=trie[root][val];   
        }
        return root;
    }
    inline int query(string k) {
        int root=1; 
        for(int i=0;i<k.size();i++) {
            int val=k[i]-'a'+1;
            if(trie[root][val]==0) return -1;
            root=trie[root][val];   
        }
        return root;
    }
}tri[2];
求大佬解答 .

by Purslane @ 2021-08-22 11:06:18

貌似非全局变量开这么大就有问题 .


by fanypcd @ 2021-08-22 11:09:01

你的声明放哪的

main 里面肯定不行啊


by syksykCCC @ 2021-08-22 11:09:01

@Ma_Zhixian 我本地开 MAXN=1e6,你的代码可以过编译


by syksykCCC @ 2021-08-22 11:09:27

#include <bits/stdc++.h>
using namespace std;
const int MAXN=1e6+5;
struct Trie {
    int idx=1,trie[MAXN][26];
    inline int insert(string k) {
        int root=1;
        for(int i=0;i<k.size();i++) {
            int val=k[i]-'a';
            if(trie[root][val]==0) trie[root][val]=++idx;
            root=trie[root][val];   
        }
        return root;
    }
    inline int query(string k) {
        int root=1; 
        for(int i=0;i<k.size();i++) {
            int val=k[i]-'a'+1;
            if(trie[root][val]==0) return -1;
            root=trie[root][val];   
        }
        return root;
    }
}tri[2];
int main() {

}

by fanypcd @ 2021-08-22 11:10:12

编译可以加上

-Wl,--stack=536870912 -Wall

手动扩容栈大小


by fanypcd @ 2021-08-22 11:11:33

-Wall 是我忘了删了


by Purslane @ 2021-08-22 11:12:59

@syksykCCC ?

我先把这个东西注释掉 , 在 main 里面写了个 "HHX AK IOI" , 编译运行后在把这个东西取消注释 , 把 "HHX AK IOI" 去掉 .

结果编译运行出来还是有 "HHX AK IOI"


by syksykCCC @ 2021-08-22 11:15:54

@Ma_Zhixian 那就不懂了


by 墨忧 @ 2021-08-22 11:36:22

qndmx


by tZEROちゃん @ 2021-08-22 19:49:51

@Ma_Zhixian 你倒是给个完整的代码(

HHX AK IOI 好评(


| 下一页