本文共 1123 字,大约阅读时间需要 3 分钟。
算法上那本紫书.. P82
goto的思想..... ?其实不是很麻烦.. 写个函数好了
然后就是一定要注意边界... 还有比如p+d%n那个,一个是括号,另一个10 的时候试一下....
具体的写在注释里了.....边界搞清楚if possible
///练习键盘打字速度和减少错误率... 手机打字不算什么/// 真的..... 以后也是啊 聊天请选电脑 我的天啊啊 竟然都可以一边摸鱼一边聊天/// 聊2 个的同时还处理数据并A 了一道题.... 太厉害了///....#include#include //这代码可是我看完书之后自己打的!!(((// (((// 真的效率好底我太懒了我要把手机扔了T Tusing namespace std;int n, m, k; int a[25];int go(int p, int d, int t){ while (t--) { do {// 10 +-1 +1= =9 p = (p + d +n-1) % n +1;//应用到 如果p=0,d=-1的时候%n就没了 // 然后就会卡住,但是你是%n所以加上一个无害的n就可以了 //不妨设p+d为0 两个式子的差距显然 ///第一个式子结果是1~n之间 第二个式子是0~(n–1)(我的天啊! //时时刻刻想着0!!!!! // 不不不不.....主要是特殊情况,比如p+d=10,如果%n就是0,但是如果是p+d+n-1%n就是n-1,再+1=10 //所以为啥不用i=0;i > n >> k>> m&&(n!=0&&m!=0&&k!=0)) { //初始化! for (int i = 1; i <= n; i++) a[i] = i; int left = n; int p1 = n; int p2 = 1; while (left){ p1=go(p1, 1, k); p2=go(p2, -1, m); cout< << p1; left--; if (p1 != p2) { cout < << p2 ;//不能在这输出啊= = left--; } a[p1] = a[p2] = 0;//这都能理解,人死了钱没花了要写好一个=0 if (left)cout << ","; }cout << endl; } return 0;}
转载地址:http://xmuti.baihongyu.com/