尝试用组合数学来思考的话
第一题可以使用一次魔法感觉就是向上或者向右多走一次--C(n+m+1,n+1)+C(n+m+1,m+1)
第二题经过A必须经过B可以是先走到A再走到B再走到终点--C(x+y,x)*C(x'-x+y'-y,x'-x)*C(n-x'+m-y',n-x'),经过了A会被强制传送到B可以分为两种情况(走A传送到B再走到终点,不走A到终点--总方案减去走A的方案)--C(x+y,x)*C(n-x'+m-y',n-x')+C(n+m,n)-(C(x+y,x)*C(n-x+n-y,n-x)),不能同时经过A和B就是总方案数减去同时经过A和B的方案数(第一种情况)--C(n+m,n)-(C(x+y,x)*C(x'-x+y'-y,x'-x)*C(n-x'+m-y',n-x'))
感觉还有点小bug...