测试全过提交全错

P4414 [COCI2006-2007#2] ABC

@[compatibility](/user/1074260) 你这个太麻烦了你看看我的 ```c #include<bits/stdc++.h> using namespace std; int main() { int x,y,z; cin>>x>>y>>z; //排序 if(x>y)swap(x,y); if(x>z)swap(x,z); if(y>z)swap(z,y); //输入顺序 char a,b,c; cin>>a>>b>>c; //输出(简单判断) if(a=='A')cout<<x<<" "; else if(a=='B')cout<<y<<" "; else cout<<z<<" "; if(b=='A')cout<<x<<" "; else if(b=='B')cout<<y<<" "; else cout<<z<<" "; if(c=='A')cout<<x<<" "; else if(c=='B')cout<<y<<" "; else cout<<z<<" "; return 0; } ```
by xQWQx @ 2023-09-02 19:14:09


@[C112345565](/user/1024387) 我只学了c还没开始c++呢..
by compatibility @ 2023-09-02 19:22:35


@[compatibility](/user/1074260) ......
by xQWQx @ 2023-09-02 19:23:56


@[C112345565](/user/1024387) 所以我这个是哪里出问题了吗
by compatibility @ 2023-09-02 19:26:45


@[compatibility](/user/1074260) ~~我只学了c++还没开始c呢..~~
by xQWQx @ 2023-09-02 19:31:29


@[compatibility](/user/1074260) 还是会一点的我看看
by xQWQx @ 2023-09-02 19:31:56


@[compatibility](/user/1074260) ```c #include<bits/stdc++.h> using namespace std; int main() { int x,y,z,l; char a,b,c; scanf("%d%d%d",x,y,z); scanf("%c%c%c",a,b,c); if(x>y){l=y;y=x;x=l;} if(x>z){l=z;z=x;x=l;} if(y>z){l=z;z=y;y=l;} if(a=='A')printf("%d ",x); else if(a=='B')printf("%d ",y); else printf("%d ",z); if(b=='A')printf("%d ",x); else if(b=='B')printf("%d ",y); else printf("%d ",z); if(c=='A')printf("%d ",x); else if(c=='B')printf("%c ",y); else printf("%d ",z); return 0; } ``` 这样能看懂吗?⊙﹏⊙∥
by xQWQx @ 2023-09-02 19:45:36


@[C112345565](/user/1024387) 呃,看不太懂,改成这样不知道为什么就过了,明明之前跟这个没什么区别的 ```c #define _CRT_SECURE_NO_WARNINGS 1 #include <iostream> void rank1(int arr[], int left, int right)//left:开始的下标,right:结束的下标。 { int ret = arr[left]; int right1 = right; int left1 = left; if (left < right) { while (left < right) { while ((left < right) && (arr[right] >= ret)) { right--; } arr[left] = arr[right]; left++; while ((left < right) && (arr[left] <= ret)) { left++; } arr[right] = arr[left]; right--; } arr[left] = ret; rank1(arr, left1, left - 1); rank1(arr, right + 1, right1); } } int main() { int arr1[33] = { 0 }; char arr2[5] = { 0 }; for (int i = 0; i < 3; i++) { scanf("%d", &arr1[i]); getchar(); } scanf("%s", &arr2); rank1(arr1, 0, 2); for (int i = 0; i < 3; i++) { if (arr2[i] == 'A') arr2[i] = arr1[0] + '0'; else if (arr2[i] == 'B') arr2[i] = arr1[1] + '0'; else if (arr2[i] == 'C') arr2[i] = arr1[2] + '0'; } fflush(stdin); fflush(stdout); for (int i = 0; i < 3; i++) { printf("%d", arr2[i] - '0'); if (i != 2) { printf(" "); } } printf("\n"); return 0; }
by compatibility @ 2023-09-02 19:48:13


@[compatibility](/user/1074260) 你这个我也看不太懂⊙﹏⊙∥ ```c //头文件 #include<bits/stdc++.h> using namespace std; int main() { //定义 int x,y,z,l; char a,b,c; //输入 scanf("%d%d%d",x,y,z); scanf("%c%c%c",a,b,c); //排序(如果大于就交换,类似于冒泡) if(x>y){l=y;y=x;x=l;} if(x>z){l=z;z=x;x=l;} if(y>z){l=z;z=y;y=l;} //输出一个一个输出(可以理解为A为最小B为中C为大,因为已经排序好了,所以判断输出大小值) if(a=='A')printf("%d ",x); else if(a=='B')printf("%d ",y); else printf("%d ",z); if(b=='A')printf("%d ",x); else if(b=='B')printf("%d ",y); else printf("%d ",z); if(c=='A')printf("%d ",x); else if(c=='B')printf("%c ",y); else printf("%d ",z); //结束 return 0; } ``` 重新加了一遍注释~~这次能看懂吗?~~
by xQWQx @ 2023-09-02 19:57:10


@[C112345565](/user/1024387) 差不多懂了 ```c #define _CRT_SECURE_NO_WARNINGS 1 #include <iostream> void rank1(int arr[], int left, int right)//left:开始的下标,right:结束的下标。 { int ret = arr[left]; int right1 = right; int left1 = left; if (left < right) { while (left < right) { while ((left < right) && (arr[right] >= ret)) { right--; } arr[left] = arr[right]; left++; while ((left < right) && (arr[left] <= ret)) { left++; } arr[right] = arr[left]; right--; } arr[left] = ret; rank1(arr, left1, left - 1); rank1(arr, right + 1, right1); } } //上面是快排的函数 int main() { int arr1[33] = { 0 };//这个数组放数字 char arr2[5] = { 0 };//这个数组放ABC for (int i = 0; i < 3; i++) { scanf("%d", &arr1[i]); getchar(); } scanf("%s", &arr2); rank1(arr1, 0, 2);//把数字排序 for (int i = 0; i < 3; i++) { if (arr2[i] == 'A') arr2[i] = arr1[0] + '0'; else if (arr2[i] == 'B') arr2[i] = arr1[1] + '0'; else if (arr2[i] == 'C') arr2[i] = arr1[2] + '0'; } //把放ABC的数组里面的ABC换成对应的数字 fflush(stdin); fflush(stdout); //好像是清内存来着? for (int i = 0; i < 3; i++) { printf("%d", arr2[i] - '0'); if (i != 2) { printf(" "); } } //按顺序输出 printf("\n"); return 0; }
by compatibility @ 2023-09-02 21:34:24


|