求大佬帮助

P1838 三子棋I

@[13858077854meng](/space/show?uid=116304) 连等号好像是不能用的,中间加个&&试试吧
by 老彩笔 @ 2019-07-02 21:47:33


@[hdyzgsj](/space/show?uid=168324) 还是不输出 但谢谢了 ``` #include <bits/stdc++.h> using namespace std; int main(){ char a[10]; int map[3][3]; memset(map,-1,sizeof(map)); scanf("%s",&a); for(int i=0;i<strlen(a);i++){ int x=a[i]-'0'-1; map[x/3][x]=i%2; //0:xiaoa 1:uim } for(int i=0;i<3;i++){ if((map[i][0]==map[i][1])&&(map[i][1]==map[i][2])){ if(map[i][0]==1){ printf("uim wins."); }else if(!map[i][0]){ printf("xiaoa wins."); } return 0; } if((map[0][i]==map[1][i])&&(map[1][i]==map[2][i])){ if(map[0][i]==1){ printf("uim wins."); }else if(!map[i][0]){ printf("xiaoa wins."); } return 0; } } if((map[0][0]==map[1][1])&&(map[1][1]==map[2][2])){ if(map[0][0]==1){ printf("uim wins."); }else if(!map[0][0]){ printf("xiaoa wins."); } return 0; } if((map[0][2]==map[1][1])&&(map[1][1]==map[2][0])){ if(map[0][2]==1){ printf("uim wins."); }else if(!map[0][0]){ printf("xiaoa wins."); } return 0; } printf("drew."); return 0; } ```
by 13858077854meng @ 2019-07-03 19:07:42


```cpp for(int i=0;i<strlen(a);i++){ int x=a[i]-'0'-1; map[x/3][x]=i%2; //0:xiaoa 1:uim } ``` 这个循环他死了=。= 然后把所有的if(map[][]==1)改成if(map[][])他就输出了~~但是答案不对~~
by 老彩笔 @ 2019-07-03 19:27:09


@[13858077854meng](/space/show?uid=116304)
by 老彩笔 @ 2019-07-03 19:28:29


@[hdyzgsj](/space/show?uid=168324) 如果改成if(map[][]) 会有问题吧 因为值为-1是判断也为真
by 13858077854meng @ 2019-07-03 19:35:35


当我没说
by 13858077854meng @ 2019-07-03 19:36:06


@[hdyzgsj](/space/show?uid=168324) 如果将 ``` map[x/3][x]=i%2; ``` 改为 ``` map[x/3][x%3]=i%2; ``` 如何? 却还是不输出
by 13858077854meng @ 2019-07-03 19:41:31


@[13858077854meng](/space/show?uid=116304) 改成 ```cpp int qwq=i%2;//改成临时变量他就不死了,我也不知道为啥 mep[x/3][x]=qwq; ```
by 老彩笔 @ 2019-07-03 19:55:07


~~map~~
by 13858077854meng @ 2019-07-04 15:57:45


@[hdyzgsj](/space/show?uid=168324)
by 13858077854meng @ 2019-07-04 15:58:01


|