c-为什么就算不出来?是一道算法问题 感到纠结

问题描述

为什么就算不出来?是一道算法问题 感到纠结

今有7对数字:两个1,两个2,两个3,...两个7,把它们排成一行。
要求,两个1间有1个其它数字,两个2间有2个其它数字,以此类推,两个7之间有7个其它数字。如下就是一个符合要求的排列:

17126425374635

当然,如果把它倒过来,也是符合要求的。

请你找出另一种符合要求的排列法,并且这个排列法是以74开头的。

注意:只填写这个14位的整数,不能填写任何多余的内容,比如说明注释等。#include
#include
int a[14],c[14];
void paixu(int x){
if(x==0||x==1||x==8||x==6){paixu(x+1);}
if(x>=14){
for(int i=0;i
int b=i+1+a[i];
if(b>=14){ b=i-a[i]-1;
if(a[i]!=a[b]) return ;
}
if(b<14) if(a[i]!=a[b]) return ;

        }
       for(i=0;i<14;i++)
           printf("%d",a[i]);

}

for(int b=1;b<=14;b++)
    for(int i=1;i<=7;i++){
    if(!c[b]){
    a[x]=i;
    c[b]=1;
    paixu(x+1);
    c[b]=0;
    }
}

}

int main(){
memset(a,0,sizeof(a));
memset(c,0,sizeof(c));
a[0]=7,a[1]=4,a[8]=7,a[6]=4;
c[0]=1,c[1]=1,c[8]=1,c[6]=1;
paixu(1);

return 0;
}


解决方案

又是那个傻桥出的馊题,用C#写一个,反正你只要答案

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            foreach (var item in foo("74"))
                Console.WriteLine(item);
        }
        static IEnumerable<string> foo(string current)
        {
            if (current.Length == 14)
            {
                yield return current;
            }
            else
            {
                var query = Enumerable.Range(1, 7).Select(x => current + x.ToString())
                    .Where(y =>
                    {
                        var chars = y.Select((z, i) => new { z, i })
                            .GroupBy(z => z.z);
                        return chars.All(z => z.Count() < 3 && (z.Last().i - z.First().i - 1) == (z.Count() == 2 ? z.Key - '0' : -1));
                    });
                foreach (string s in query)
                    foreach (string s1 in foo(s))
                        yield return s1;
            }
        }
    }
}

74151643752362
Press any key to continue . . .

时间: 2024-11-02 22:27:25

c-为什么就算不出来?是一道算法问题 感到纠结的相关文章

求助一道算法题,关于数组算法

问题描述 求助一道算法题,关于数组算法 有一个字符串数组{"用户1,商品1,200","用户2,商品2,100","用户3,商品1,300","用户4,商品3,50","用户5,商品3,50"},写的方法需要返回的是{"用户2,商品2","用户3,商品1","用户4,商品3"}也就是说比较下每种商品的最高价格是谁,并返回谁买了,如果价格相同取最先买

一道算法基础题 uva1586

问题描述 一道算法基础题 uva1586 题目链接在这儿 http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=830&page=show_problem&problem=4461 我自己做的代码如下 但是通不过 测了好多数据都没问题 #include<cstdio> #include<cstring> using namespace std; in

字符串 匹配-一道算法问题字符串匹配的

问题描述 一道算法问题字符串匹配的 为了能有效地辅助对话系统完成限定领域完整对话流程,我们需要一个强大的匹配功能,现在要求你用编程来实现以下功能: 我们给出N个句子,作为语料库,语料库的句子分为以下三类: 1. 包含"_","_"可以匹配任意长度的字符串或者空串,例如,"早上好,店家!"能被语料库中的"_早上好_"匹配到,这类句子优先级最高. 2. 包含"*","*"可以匹配任意长度的字符串或者空串,例如,"早上好,店家!"能被语料库中的&quo

逻辑题-一道算法或者逻辑面试题,求思路

问题描述 一道算法或者逻辑面试题,求思路 100个面值是1-50随机分布的硬币排成一列,你和另一个人一人一个的取,只能从队列头部和尾部取.如何保证最后你取的硬币面值和比你对手多? 解决方案 保证你取倒数第二张? 还是和最大? 1-50 面值按照谁家的硬币? 美元? 美元面值: 现流通硬币有1 分.5 分.10分.1/4 元.1/2 元.1 元六种面值. 正面与背面所铸图案如下: 1 分 - 正面: Lincoln 林肯 ,背面:林肯纪念堂 5 分 - 正面:Jefferson 杰佛逊 ,背面:杰

一道算法题,看看大家的思路(续)

"一道算法题,看看大家的思路",看了众多的回复,本人愚钝,没有看明白其中的奥妙.在细细研究<编程之美>中的文章后,终于理解了这个算法的思路.现将这个算法的演算过程以及代码实现(VB2005)赋予其后,和各位交流. 现再将题目复述一遍: 题目描述:有31,-41,59,26,-53,58,97,-93,-23,84十个数.SUM(N,M)表示从第N个数到到第M个数的和.例如:SUM(2,3)=-41+59=18.问:最大的和是多少?对应的N和M是多少? 先不管N和M的计算,直

c c++-C/C++算法问题,纠结很久,初学者,多多关照

问题描述 C/C++算法问题,纠结很久,初学者,多多关照 N个数分成K个组,我想要所有的分组情况.用C/C++实现,听说使用递归,但是就不能用循环实现吗?如果只能是递归,请给出代码. 解决方案 http://blog.chinaunix.net/uid-24203478-id-3195251.html

每日一道算法题-寻找丑数

题目:我们把只包含因子2.3和5的数称作丑数(Ugly Number).例如6.8都是丑数,但14不是,因为它包含因子7.习惯上我们把1当做是第一个丑数.求按从小到大的顺序的第1500个丑数. 分析:寻找一个数是不是满足某种数(质数,水仙数)等,最简单的方法就是遍历,对于任意一个丑数必定可以写成2^m*3^n*5^p,因而对于一个丑数,只含有2,3,5因子,也就意味着该数number%2==0:number%3==0:number%5==0,如果一个数能被2整除,我们就连续除以2:能被3整除,我

从一道算法题说去2

今天的算法题是关于 字符串的最小编辑距离问题求解. 1. 什么是字符串编辑距离 编辑距离(Edit Distance),又称Levenshtein距离,是指两个字串之间,由一个转成另一个所需的最少编辑操作次数.许可的编辑操作包括将一个字符替换成另一个字符,添加一个字符,删除一个字符. 例如将kitten一字转成sitting: a. sitten (k→s)  b. sittin (e→i)  c. sitting (→g)  俄罗斯科学家Vladimir Levenshtein在1965年提出

从一道算法题说去1

声明:算法学习来自,7月算法,面试&算法&机器学习&找工作就上七月算法 1. 今天学习的算法是 LCS,最长公共子序列,属于典型的动态规划基础题.     十分钟搞定LCS 学习视频:http://julyedu.com/video/play/id/9 2. 实践代码: /* Algorithm LCS */ #include <stack> #include <cstdio> #include <string> #include <ios