【发布时间】:2012-05-03 18:54:31
【问题描述】:
我想使用下面的代码,我想将它用于“未知大小的输入”。例如有一个数组int cac[1000][1000]。我可以使用vector<vector<int> > array;,那么如何使用-1 对其进行初始化?有什么建议吗?
#include <sstream>
#include <iostream>
#include <vector>
#include <cstdlib>
#include <memory.h>
using namespace std;
int cac[1000][1000];
string res[1000][1000];
vector<string> words;
int M;
int go(int a, int b){
if(cac[a][b]>= 0) return cac[a][b];
if(a == b) return 0;
int csum = -1;
for(int i=a; i<b; ++i){
csum += words[i].size() + 1;
}
if(csum <= M || a == b-1){
string sep = "";
for(int i=a; i<b; ++i){
res[a][b].append(sep);
res[a][b].append(words[i]);
sep = " ";
}
return cac[a][b] = (M-csum)*(M-csum);
}
int ret = 1000000000;
int best_sp = -1;
for(int sp=a+1; sp<b; ++sp){
int cur = go(a, sp) + go(sp,b);
if(cur <= ret){
ret = cur;
best_sp = sp;
}
}
res[a][b] = res[a][best_sp] + "\n" + res[best_sp][b];
return cac[a][b] = ret;
}
int main(int argc, char ** argv){
memset(cac, -1, sizeof(cac));
M = atoi(argv[1]);
string word;
while(cin >> word) words.push_back(word);
go(0, words.size());
cout << res[0][words.size()] << endl;
}
【问题讨论】:
-
您希望
-1具有什么语义? -
我很困惑,你能不能更深入地解释一下你想要做什么?
-
无限数组是链表。这就是你想要的。
-
std::map<int, std::vector<int>>我认为这对你会更好。 -
@vk7x :
if (cac[i].empty()) { /*not initialized*/ }...