Cod sursa(job #1896200)

Utilizator alexmihaxPasca Mihai alexmihax Data 28 februarie 2017 15:43:15
Problema Subsecventa de suma maxima Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <iostream>
#include <algorithm>
using namespace std;

int st[101],n,k,v[101];

void show()
{
    for(int i=1;i<=n;i++)
        out<<st[i]<<" ";
    out<<'\n';
}

int cmmdc(int a,int b)
{
    int r;
    while(b)
    {
        r=a%b;
        a=b;
        b=r
    }
    return a;
}

bool valid(int k)
{
    for(int i=1;i<k;++i)
        if(st[i]==st[k])
            return false;
    if(k>1)
        if(cmmdc(v[st[k]],st[k+1])==1) return true;
    return false;
}

int backtr(int k)
{
    if(k==n+1)
        show();
    else
    {
        for(int i=1;i<=n;++i)
        {
            st[k]=j;
            if(valid(k))
                backtr(k+1);
        }
    }
}

int main()
{
    in>>n;
    for(int i=1;i<=n;i++)
        in>>v[i];
    sort(v+1,v+n+1);
    backtr(1);
    return 0;
}