NYOJ366D의 작은 L과 NYOJO32의 조합수와 NYOJ19가 배열을 잘하는 소명과 NYOJ488의 소수환[귀속]
3907 단어 inipermutation
이 몇 문제를 보면 모두 귀환으로 해답을 구할 수 있다.귀환ac로 이 몇 문제를 완성한 후에 귀환은 마땅히 파악해야 할 차이가 많지 않다.오늘 이 네 문제를 총괄해 봅시다.이 네 개의 문제는 기본적으로 똑같이 돌아가며 사이를 조금만 바꾸면 된다.
19 배열에 능한 샤오밍:
이것은 귀속만 쓸 수 있을 것 같다.
코드는 다음과 같습니다.
#include<stdio.h>
#include<string.h>
int n,m;
int ok[15];//
int num[15];//
int ac[15];//
void f(int l)
{
int a,b;
if(l==m)
{
for(a=0;a<m;a++)
printf("%d",num[a]);
printf("
");
//return;
}
else
{
for(b=0;b<n;b++)
{
if(ac[b]>0)
{
num[l]=ok[b];
ac[b]--;
f(l+1);
ac[b]++;
}
}
}
}
int main()
{
int a,b,k;
for(a=0;a<10;a++)
ok[a]=a+1;
scanf("%d",&k);
while(k--)
{
scanf("%d%d",&n,&m);
for(a=0;a<=n;a++)
ac[a]=1;
memset(num,0,sizeof(num));
f(0);
}
}
336D의 작은 L:
이것도 넥스트로...permutation으로 해답을 구하다.귀속 호출 코드는 붙이지 않습니다.코드는 다음과 같습니다.
#include<stdio.h>
#include<algorithm>
using namespace std;
int main()
{
int a[]={1,2,3,4,5,6,7,8,9};
int k,n,i;
scanf("%d",&k);
while(k--)
{
scanf("%d",&n);
do
{
for(i=0;i<n;i++)
{
printf("%d",a[i]);
}
printf("
");
}
while(next_permutation(a,a+n));
}
return 0;
}
32 조합:
먼저 배열을 잘하는 샤오밍을 보고 나서 이 문제를 보면 매우 자유롭다.
#include<stdio.h>
#include<string.h>
int n,m;
int ok[15];//
int num[15];//
int ac[15];//
void f(int l)
{
int a,b;
if(l==m)
{
for(a=0;a<m;a++)
printf("%d",num[a]);
printf("
");
}
else
{
if(l==0)
{
for(b=n-1;b>=m-1;b--)
{
if(ac[b]>0)
{
num[l]=ok[b];
ac[b]--;
f(l+1);
ac[b]++;
}
}
}
else
{
for(b=n-1;b>=0;b--)
{
if(ac[b]>0)
{
if(l>=1&&ok[b]<num[l-1])
{
num[l]=ok[b];
ac[b]--;
f(l+1);
ac[b]++;
}
}
}
}
}
}
int main()
{
int a,b,k;
for(a=0;a<10;a++)
ok[a]=a+1;
while(scanf("%d%d",&n,&m)!=EOF)
{
for(a=0;a<=n;a++)
ac[a]=1;
memset(num,0,sizeof(num));
f(0);
}
}
488 소수 루프:
위의 두 개의 귀속을 알고 다시 보면 이것은 매우 자유로운 것 같지만, 이것은 귀속만 사용하면ac가 될 수 없다.시간 초과할 거예요.처리할 때 작은 규칙이 있다.입력한 n% 2 = 1 & n!1 은 무조건 No Answe입니다.이 상황들은 더 이상 귀속되지 마라.안 그러면 너도 나처럼 비극적이야.나는 두 번 비극을 당했다.
코드:
#include<stdio.h>
#include<string.h>
int ac[25]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
int yi[25],sushu[50];
int ok[25]={2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22};
int loop,n;
void f(int i)
{
int a,b;
if(i==n)
{
printf("1 ");
for(a=0;a<n;a++)
printf("%d ",yi[a]);
printf("
");
loop=1;
}
else
{
for(a=0;a<n;a++)
{
if(i==n-1)
{
if(ac[a]==1&&sushu[1+ok[a]]==0&&sushu[yi[i-1]+ok[a]]==0)
{
yi[i]=ok[a];
ac[a]--;
f(i+1);
ac[a]++;
}
}
else if(i==0)
{
if(ac[a]==1&&sushu[1+ok[a]]==0)
{
yi[i]=ok[a];
ac[a]--;
f(i+1);
ac[a]++;
}
}
else
{
if(ac[a]==1&&sushu[yi[i-1]+ok[a]]==0)
{
yi[i]=ok[a];
ac[a]--;
f(i+1);
ac[a]++;
}
}
}
}
}
int main()
{
int a,b,j=1;
memset(sushu,0,sizeof(sushu));
for(a=2;a<45;a++)
for(b=a+a;b<45;b+=a)
{
if(sushu[b]==0)
sushu[b]=1;
}
while(1)
{
scanf("%d",&n);
loop=0;
if(n==0)
break;
printf("Case %d:
",j++);
if(n%2&&n!=1) printf("No Answer
");
else
{
n--;
f(0);
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
pku 2231 Moo Volume 선형 방법구sig(sig|a[i]-a[j]|)Moo Volume Time Limit: 1000MS Memory Limit: 65536K FJ's N cows (1 <= N <= 10,000) all graze at various locations on a lo...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.