明明是相同的算法思路,C++能过得去而golang却过不去? 以下是go代码
package main
import(
"fmt"
)
func main(){
var(
a,b,c,d int
p [3]int
result [3]string
j,k int
is1,is2 bool
)
fmt.Scanf("%d %d %d %d",&a,&b,&c,&d)
fmt.Scanf("%d %d %d",&p[0],&p[1],&p[2])
for i := 0;i < 3;i += 1{
j = 0
k = 0
is1 = true
is2 = true
for j < p[i]{
if is1{
j += a
is1 =! is1
}else {
j += b
is1 =! is1
}
}
for k < p[i]{
if is2{
k += c
is2 =! is2
}else{
k += d
is2 =! is2
}
}
if !is1 && !is2{
result[i] = "both"
}else if (is1 && !is2) || (!is1 && is2){
result[i] = "one"
}else if is1 && is2 {
result[i] = "none"
}
}
fmt.Printf("%s\n%s\n%s",result[0],result[1],result[2])
}
接着是c++的代码:
#include <iostream>
using namespace std;
int main(){
int a,b,c,d,p[3],j,k;
bool is1,is2;
string result[3];
cin >> a >> b >> c >> d >> p[0] >> p[1] >> p[2];
for(int i = 0;i < 3;i += 1){
is1 = true;
is2 = true;
j = 0;
k = 0;
while(p[i] > j){
if(is1){
j += a;
is1 =! is1;
}else{
j += b;
is1 =! is1;
}
}
while(p[i] > k){
if(is2){
k += c;
is2 =! is2;
}else{
k += d;
is2 =! is2;
}
}
if(!is1 && !is2){
result[i] = "both";
}else if(is1 && !is2){
result[i] = "one";
}else if(!is1 && is2){
result[i] = "one";
}else{
result[i] = "none";
}
cout << result[i] << endl;
}
return 0;
}