这种程序怎么写呢

Lcindep110 2013-06-29 01:00:51



高手们请看图中,红框框里三列数据,
其中 7 9 10 9 7 以10为中心79 97前后对称,其中最后一个数字7如果换成其他数字则无法符合前后对称的条件。5个数字中间数字为中心,另外四个数字前后对称这是一种情况,
另一种情况是 另外2个红框框
第一个 3 4 5 4 5 中的前四个数字3 4 5 4为引,后面的第五个数字如果为3或者5则符合条件(注意这第五个数字必须是前面四个数字引中被同一数字间隔开的那2个数字,如上面举例中的3和5被4间隔开,这第五数字如果出现3或者5则条件符合成立,如是其他数字则判断为不符合)
再阐述一遍第二种情况 ,第二个 10 5 1 5 1 中的前四个数字10 5 1 5为引,后面第五个数字如果是10或者1则符合条件成立。

上面告诉大家我们的搜索目标就是这2种情况的数据

我想要的是,从图中这10列数字中,每一列各自以四个数字来循环判断第五个数字,自动循环计算出符合条件的数字组合有几个,还有,出现数字引,但是第五个数字不符合条件的数字组合有几个。

如果还有不清楚,拜托大家留言下,我会尽力讲清楚。

我已经用尽毕生所有语言能力组织语句表述出来,希望你们能懂!!!

这个很重要拜托拜托,麻烦大家帮忙想想
...全文
152 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ntmdbya 2013-06-29
  • 打赏
  • 举报
回复
确实有些复杂,能说说这东西的具体应用在什么地方吗
Lcindep110 2013-06-29
  • 打赏
  • 举报
回复
引用 2 楼 sp1234 的回复:
“用尽毕生所有语言能力组织语句表述出来”,其实在编程面前就显得比较苍白。写这样的程序不过是两个Linq查询,1分钟的事情。 这怎样证明有效呢?
大哥,我好像说得复杂了。我再简单跟你说下,你再辛苦下 ,帮我看看哈。 我上面说的是有2种情况,其实呢,归结到底其实只有1种情况。 你看红框里面的3列数字 7 9 10 9 7 和 3 4 5 4 5 和10 5 1 5 1 其实他们简单点看 就是前4个数字来判断第五个数字 也就是7 9 10 9来判断 只要出现的是7和10就符合 3 4 5 4 来判断 只要出现的是3和5就符合 10 5 1 5 来判断 只要出现的是10和1就符合 你能明白吗 然后判断好第第五个数字后 再循环的以第2个数字到第5个数字为新的引去判断新的第五个数字也就是原来的第六个数字这样。 还有不知道您说的2列对调是个上面情况,能否麻烦你 另外举例给我看看呢,我没想明白。
wwwspider001 2013-06-29
  • 打赏
  • 举报
回复
研究一下sp1234 的query1 query2 , 搞明白后你说的都不是问题
  • 打赏
  • 举报
回复
比如说,你总是比较同一列,我觉得这就不太靠谱。我猜就算是两列对调,该中奖时还是中奖,所以你的方法本身漏掉了许多机会。
  • 打赏
  • 举报
回复
“用尽毕生所有语言能力组织语句表述出来”,其实在编程面前就显得比较苍白。写这样的程序不过是两个Linq查询,1分钟的事情。 这怎样证明有效呢?
  • 打赏
  • 举报
回复
using System;
using System.Linq;

namespace ConsoleApplication1
{

    class Program
    {
        static void Main(string[] args)
        {
            var 行数 = 50;
            var array = new int[行数, 10];
            随机产生数字(array);
            var query1 = from row in Enumerable.Range(0, array.GetLength(0) - 4)
                         from col in Enumerable.Range(0, 10)
                         where array[row, col] == array[row + 3, col] && array[row + 1, col] == array[row + 4, col]
                         select new { row, col };
            int cnt = 0;
            Console.WriteLine("\r\n前后对称的第一个数字位置:");
            foreach (var x in query1)
                Console.Write("{0}:  {1}行 {2}列\r\n", ++cnt, x.row + 1, x.col + 1);
            Console.WriteLine();
            cnt = 0;
            var query2 = from row in Enumerable.Range(0, array.GetLength(0) - 4)
                         from col in Enumerable.Range(0, 10)
                         where array[row + 1, col] == array[row + 3, col] && array[row + 2, col] == array[row + 4, col]
                         let 第五个数字是否符合 = array[row, col] == array[row + 4, col] || array[row + 1, col] == array[row + 4, col]
                         select new { row, col, 第五个数字是否符合 };
            var lst2 = query2.ToList();
            Console.WriteLine("\r\n数字引并且第5个数字符合:");
            foreach (var x in query2.Where(x => x.第五个数字是否符合))
                Console.Write("{0}:  {1}行 {2}列\r\n", ++cnt, x.row + 1, x.col + 1);
            cnt = 0;
            Console.WriteLine("\r\n数字引并且第5个数字不符合:");
            foreach (var x in query2.Where(x => !x.第五个数字是否符合))
                Console.Write("{0}:  {1}行 {2}列\r\n", ++cnt, x.row + 1, x.col + 1);
            Console.ReadKey();
        }

        private static Random Rnd = new Random();

        private static void 随机产生数字(int[,] array)
        {
            for (var i = 0; i < array.GetLength(0); i++)
            {
                Console.Write("{0:D2}行: ", i + 1);
                var lst = Enumerable.Range(1, 10).Select(x => Rnd.Next(10) + 1).OrderBy(x => Rnd.Next()).ToArray();
                for (var j = 0; j < 10; j++)
                {
                    Console.Write("{0:D2} ", lst[j]);
                    array[i, j] = lst[j];
                }
                Console.WriteLine();
            }
        }

    }

}

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧