社区讨论

史上最诡异代码(求优化)

P1259黑白棋子的移动参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@mid0vy84
此快照首次捕获于
2025/11/24 18:47
3 个月前
此快照最后确认于
2025/11/24 20:03
3 个月前
查看原帖
无论从格式还是写法上都有些诡异
  • 思路是对于原本的2n个球 拿出要求的两个球 放到另一个数组中,最后根据情况合并两个数组和"--"
CPP
#include <bits/stdc++.h>
using namespace std;

int n;
vector<char> a, b;

int main(void)  {
    cin >> n;

    for(int i = 1; i <= n; i++)   a.push_back('o');
    for(int i = 1; i <= n; i++)   a.push_back('*');
//    for(auto& v : a)   cout << v;   cout << '-' << '-';
    int u = n-1, v = 2*n-1;
//    for(int i = 0; i <= u; i++) cout << a[i]; cout << '-' << '-';
    int temp = 0;
    while(true) {

        if(temp != 0)  { 
            for(int i = 0; i <= u; i++) cout << a[i];   
            cout << '-' << '-';
            for(int i = u+1; i <= v; i++)   cout << a[i];   
            for(auto& k : b)    cout << k;  cout << endl;
        }

        for(auto& k : a) cout << k;   cout << '-' << '-';
        for(auto& k : b)    cout << k;  cout << endl;        
        
        swap(a[u], a[v-1]);
        b.push_back(a[v-1]);    b.push_back(a[v]);
        a.pop_back();    a.pop_back();
        u -= 1; v -= 2;
        temp = 1;
        if(u == 2) break;
    }
    cout<<"ooo--***";
    for(int i=1;i<=n-3;i++)
    cout<<"o*";
    cout<<endl;
    cout<<"ooo*o**--*";
	for(int i=1;i<=n-4;i++)
	cout<<"o*";
	cout<<endl;
	cout<<"o--*o**o";
	for(int i=1;i<=n-3;i++)
	cout<<"o*";
	cout<<endl;
	cout<<"o*o*o*--";
	for(int i=1;i<=n-3;i++)
	cout<<"o*";
	cout<<endl;
	cout<<"--";
	for(int i=1;i<=n;i++)
	cout<<"o*";
    return 0;
}
我ac了甚至没想明白自己怎么ac的
思路差不多的情况下,请问怎么样能把自己的代码变得简洁干净啊(哭)
orz

回复

0 条回复,欢迎继续交流。

正在加载回复...