代码是代码中问题的答案所以我只需要代码中的编程错误...队列会产生问题他不会推动元素或输出中的问题..你可以帮帮我?
当我运行它时......他们打印一个随机数而不是我将它们推入队列的数字
#include<bits/stdc++.h>
using namespace std;
bool check(int a , int b , string s){
int test[a][b];
int k = 0;
for(int i = 0 ; i < b ; ++i){
for(int j = 0 ; j < a ; ++j){
test[i][j] = s[k++];
}
}
bool f = true;
bool fx = false;
for(int i = 0 ; i < b ; ++i){
for(int j = 0 ; j < a ; ++j){
if(test[j][i] == 'O'){
f = false;
break;
}
}
if(f){
fx = true;
break;
}
f = true;
}
return fx;
}
int main(void){
int t;
cin>>t;
string s;
queue<int> qa;
queue<int> qb;
const int n = 12;
for(int i = 0 ; i < t ; ++i){
cin>>s;
int cnt = 0;
int a[6] = {1 , 2 , 3 ,4 ,6 , 12};
int b[6] = {12 , 6 , 4 , 3 ,2 , 1};
for(int j = 0 ; j < 6 ; ++j){
if(check(a[j] , b[j] , s)){
++cnt;
qa.push(a[j]);
qb.push(b[j]);
}
}
cout<<cnt<<' ';
while(!qa.empty() && !qb.empty()){
cout<<qa.front() <<'x'<<qb.front()<<' ';
qa.pop();
qb.pop();
}
cout<<endl;
}
}
答案 0 :(得分:2)
在这部分
int test[a][b];
int k = 0;
for(int i = 0 ; i < b ; ++i)
{
for(int j = 0 ; j < a ; ++j)
{
test[i][j] = s[k++];
}
}
你创建测试[a] [b],但是你需要进行测试[b] [a]