给你一个数N,让你求出 这样的组合A,B,C,A,B,C要满足如下条件:A*A + B*B = C*C,A+B+C<=N

代码
            int n = 100;
            Action
<intint, Action<int>> myfor = (start, end, callback) => {
                
for (int i = start; i < end; i++) {
                    callback(i);
                }
            };

            myfor(
1, n, (a) => myfor(1, n, (b) => myfor(1, n, (c) => {
                
if (a * a + b * b == c * c)
                    Console.WriteLine(
"a:{0},b:{1},c:{2},n:{3}", a, b, c, n);
            })));

            
for (int a = 1; a < n; a++) {
                
for (int b = 1; b < n; b++) {
                    
for (int c = 1; c < n; c++) {
                        
if (a * a + b * b == c * c)
                            Console.WriteLine(
"a:{0},b:{1},c:{2},n:{3}", a, b, c, n);
                    }
                }
            }

            var r 
= from a in Enumerable.Range(1, n)
                    from b 
in Enumerable.Range(a, n)
                    from c 
in Enumerable.Range(b, n)
                    
where a + b + c < n &&
                    a 
* a + b * b == c * c
                    select 
new { A = a, B = b, C = c };
            
foreach (var item in r) {
                Console.WriteLine(
"a:{0},b:{1},c:{2},n:{3}", item.A, item.B, item.C, n);
            }

给你一个数N,让你求出 这样的组合A,B,C,A,B,C要满足如下条件:A*A + B*B = C*C,A+B+C<=N

最后一种方法的结果和前两种的结果不一样,不知道为啥。

posted @ 2010-04-22 12:59  蛙蛙王子  Views(844)  Comments(2Edit  收藏  举报