[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
直觉上觉得三个方阵都有O(1)型算法存在;慢慢找规律吧

TOP

本帖最后由 plp626 于 2011-8-17 22:34 编辑

看楼上代码得到的蛇形方阵数学关系式为
设c表示阶数,a(i,j)表示第i行第j列的数字,并记d=i+j-1,则有公式:
  1. 当i+j-2<c 时:  a(i,j)=(d*d-d)/2+j+rem(i+j,2)*(i-j)
  2. 当i+j-2>=c时:  a(i,j)=(d*d-d)/2+j+rem(i+j,2)*(i-j)-(d-c)*(d-c)
复制代码
其中,rem(x,y)表示x除以y的余数;

进而寒夜版主的代码可精简为:
  1. @echo off&set/a c=19
  2. for /l %%i in (1 1 %c%)do echo;&for /l %%j in (1 1 %c%)do (
  3.     set/a i=%%i,j=%%j,d=i+j-1
  4.     set/a "f=(d*d-d)/2+j+(i+j)%%2*(i-j)-!!((d-1)/c)*(d-c)*(d-c)+1000"
  5.     call set/p=%%f:~-3%% <nul
  6. )
  7. pause>nul
复制代码
19阶的:
  1. 001 002 006 007 015 016 028 029 045 046 066 067 091 092 120 121 153 154 190
  2. 003 005 008 014 017 027 030 044 047 065 068 090 093 119 122 152 155 189 191
  3. 004 009 013 018 026 031 043 048 064 069 089 094 118 123 151 156 188 192 225
  4. 010 012 019 025 032 042 049 063 070 088 095 117 124 150 157 187 193 224 226
  5. 011 020 024 033 041 050 062 071 087 096 116 125 149 158 186 194 223 227 256
  6. 021 023 034 040 051 061 072 086 097 115 126 148 159 185 195 222 228 255 257
  7. 022 035 039 052 060 073 085 098 114 127 147 160 184 196 221 229 254 258 283
  8. 036 038 053 059 074 084 099 113 128 146 161 183 197 220 230 253 259 282 284
  9. 037 054 058 075 083 100 112 129 145 162 182 198 219 231 252 260 281 285 306
  10. 055 057 076 082 101 111 130 144 163 181 199 218 232 251 261 280 286 305 307
  11. 056 077 081 102 110 131 143 164 180 200 217 233 250 262 279 287 304 308 325
  12. 078 080 103 109 132 142 165 179 201 216 234 249 263 278 288 303 309 324 326
  13. 079 104 108 133 141 166 178 202 215 235 248 264 277 289 302 310 323 327 340
  14. 105 107 134 140 167 177 203 214 236 247 265 276 290 301 311 322 328 339 341
  15. 106 135 139 168 176 204 213 237 246 266 275 291 300 312 321 329 338 342 351
  16. 136 138 169 175 205 212 238 245 267 274 292 299 313 320 330 337 343 350 352
  17. 137 170 174 206 211 239 244 268 273 293 298 314 319 331 336 344 349 353 358
  18. 171 173 207 210 240 243 269 272 294 297 315 318 332 335 345 348 354 357 359
  19. 172 208 209 241 242 270 271 295 296 316 317 333 334 346 347 355 356 360 361
复制代码

TOP

想到用待定系数法求多变元数列通项公式:
一般地 【如果】a(x,y,z)存在多项式关系,或,和奇数偶数相关的多项式关系,或者和变元的最大最小值相关的多项式关系,以及后两者皆相关的多项式关系;我们可以用待定系数法求出其关系式(第一种情况最简单,第二种第三种情况没有详细研究);

这个方法是通用的,求出关系式后只需下一步归纳验证关系式的正确性即可,若否则升高多项式的次数,再待定系数法求其系数,归纳验证,,,,

TOP

返回列表