我遇到了这么一个问题,
错误 C3074 无法使用带圆括号的初始值设定项初始化数组。
我搜索了微软的文档,没有C3074的错误解释。
不知道这个错误怎么解.
这道题目是要求判断一个栈的输出序列,是否符合实际。
b是栈,元素是整型。
a是栈,元素是数组,话说这样可以吗?
然后我就不知道为什么错了。
int main()
{
stack<int>b;
int m = 0;
int n = 0;
int k = 0;
cin >> m >> n >> k;
int c[1000] = { 0 };
bool d[1000] = { 0 };
queue<int [1000]>a; //队列的元素是大小为n的数组
if (m < 0 || m>1000) {
return -1;
}
if (n < 0 || n>1000) {
return -1;
}
if (k < 0 || k>1000) {
return -1;
}
for (int i = 0; i < k; i++) {
for (int j = 0; j < n; j++) {
cin >> c[j];
}
a.push(c);
}
for (int i = 0; i < k; i++) {
for (int i3 = 0; i3 < n; i3++) {
c[i3] = (a.front())[i3];
}
//memcpy(c,a.front(),4000);
a.pop();
if (!b.empty()) { b.pop(); }
d[1000] = { 0 };
b.push(c[0]);
d[c[0]-1] = true;
for (int j = 1; j < n; j++) {
if (c[j] > b.top()) {
if (c[j] - b.size() <= m && j == 6) { cout << "YES" << endl; }
else if (c[j] - b.size() <= m) { b.push(c[j]); d[c[j]-1] = true; }
else { cout << "NO"<<endl; break; }
}
else if (c[j] < b.top()) {
int i1 = 0;
for (i1 = b.top() - 1; i1 >= 0; i1--) {
if (d[i1] == false) break;
}
if (i1 > -1) {
if (c[j] ==i1+1 && j==6) { cout << "YES"<<endl; }
if (c[j] == i1 + 1) { b.push(c[j]); d[c[j]-1] = true; }
else { cout << "NO"<<endl; break; }
}
}
else { cout << "NO" << endl; break; }
}
}
return 0;
}