如何每次在不同大小的循环中重新声明相同的数组
How to redeclare the same array again in a loop with different size everytime?
所以我正在做一个图形着色问题,在这个问题中,我输入了代码必须运行的测试用例的数量。这是代码:
#include <bits/stdc++.h>
using namespace std;
int main() {
int test,num,i,j,k,l,sum,num1,num2,count,col;
cin>>test;
for(i=0;i<test;i++){
sum = 0;
cin>>num;
int arr[num][num];
for(j=0;j<num;j++){
for(k=0;k<num;k++){
arr[j][k] = 0;
}
}
for(l=0;l<num-1;l++){
cin>>num1>>num2;
arr[num1-1][num2-1] = 1;
arr[num2-1][num1-1] = 1;
}
int* colVert = new int[num];
for(j=0;j<num;j++){
colVert[j] = 0;
}
for(j=0;j<num;j++){
count = 0;
l=0;
if(j == 0){
colVert[j] = 1;
}
else{
for(k=0;k<num;k++){
if(arr[j][k] == 1){
count++;
}
}
int colSeq[count];
for(k=0;k<num;k++){
if(arr[j][k] == 1){
colSeq[l] = colVert[k];
l++;
}
}
sort(colSeq, colSeq+count);
/*for(k=0;k<count;k++){
cout<<colSeq[k];
}*/
for(k=0;k<count;k++){
if(colSeq[k] != k+1){
col = k;
break;
}
else{
col = colSeq[k] + 1;
}
}
colVert[j] = col;
}
}
for(i=0;i<num;i++){
sum = sum + colVert[i];
}
cout<<sum<<endl;
}
return 0;
}
所以问题是代码只为第一个测试用例运行,然后程序结束。我认为问题出在我声明colVert数组的方式上。那么,如何正确地做到这一点,以便在每个案例中都能运行呢?
伙计们,问题已经解决了。问题不在于colVert数组的声明方式,而是一个非常愚蠢的错误:
for(i=0;i<num;i++){
sum = sum + colVert[i];
}
我在循环中的一个循环中使用了变量"I",该循环也使用"I"作为计数器。简单地使用任何其他计数器变量就解决了这个问题。
相关文章:
- C++ "oldstyle container ":指针/数组/新 - 可能误会?
- 如果我在相应 char 数组的声明中为其提供额外的元素,是否会自动设置 NULL?
- 在C++中用字符串数组拆分声明和赋值
- 标量"新 T "与数组"新 T[1]"
- 对于循环和并行数组:未声明的标识符
- 在数组中声明的字符串扫描用户输入
- C 2 DIM数组新获得0
- 在头文件中的函数原型中获取指针数组:函数声明为 void
- 如何获取我在 2D 数组中声明和初始化的所有值的总和
- 未在范围 C++ [数组] 中声明
- C++ 堆栈程序 指针问题的 Wsing 数组 新字符[len],其中 len 为 2 创建 16 个字符
- C++数组大小声明和常量
- 数组大小声明
- 如何在c++ AMP中使用2d数组来声明array_view或数组对象
- c++数组/指针声明问题
- 如何在 C 的头文件中正确编写 extern 数组的声明?
- 在静态2D数组的声明处初始化为零
- c++初始化数组,声明大小为一个整数值
- 没有索引号的多维数组的声明
- 动态3d数组的声明和赋值