配对问题 小于10 1.3.5

#include <cstdio>
#include <algorithm>
#include <cstring>
#include <iostream>

using namespace std;

int partner[100];
int N;

int total;
void dfs()
{
    int i;
    for(i=1; i<=N; i++)
        if(partner[i]==0) break;
    if(i > N)
    {
//        for(int i=1; i<=N; i++)
//            printf("%d - %d\n", i, partner[i]);
//        printf("\n");
        total++;
        return ;
    }
    for(int j=i+1; j<=N; j++)
    {
        if(partner[j]==0)
        {
            partner[i] = j;
            partner[j] = i;
            dfs();
            partner[i] = 0;
            partner[j] = 0;
        }
    }
}

int main()
{
    scanf("%d", &N);
    memset(partner, 0, sizeof(partner));
    total = 0;
    dfs();
    cout<<total<<endl;
    return 0;
}
时间: 2024-10-13 08:19:27

配对问题 小于10 1.3.5的相关文章

判断一个数(小于10位)的位数。输入999,则输出 “它是个3位的数!”

判断一个数(小于10位)的位数. 输入999,则输出 “它是个3位的数!” -------------------------------------------------------------------------- public class HelloWorld{public static void main(String[] args){int num = 999;int count = 0; if (num >= 0  && num<=999999999){ wh

正则表达式:网店中折扣价格-要求大于0小于10,且允许保留一位小数点

需求:网店中折扣价格-要求大于0小于10,且允许保留一位小数点 需求分析: 1,)取值范围为(0,10),两端都是开区间: 2,)“可保留一位小数”,可以不包含小数,但如果包含小树就一定要仅包含一位小数. 开发(javascript下): 第一步:0-10包含一位小数:/^\d(\.\d)?$/ 第二步:排除特殊的0和0.0和10,这样的写法为: /^[^0][^0.0][^10]\d(\.\d)?$/ 测试下:是否是我们想要的结果呢? 答案:no 具体原因,我也解释不清. 换种思路: 既然0.

【c语言】用π/4 ≈ 1 - 1/3 + 1/5 - 1/7 +... 公式求π的近似值,直到发现某一项的绝对值小于10^6为止。

// 用π/4 ≈ 1 - 1/3 + 1/5 - 1/7 +... 公式求π的近似值,直到发现某一项的绝对值小于10^6为止. #include <stdio.h> #include <math.h> int main() { double sign = 1.0; int i; double sum = 0.0; for(i = 1;fabs(i) < pow( 10,6 ); i = i + 2) { sum = sum + sign / i; sign = ( -1 )

formatDate 格式化日期 ,给小于10的月日,加0,如01 02 03

var months=["Jan", "Feb", "Mar", "Apr", "May", "Jun","Jul", "Aug","Sep","Oct", "Nov", "Dec"]; function formatDate(time){ if(!time){ ret

解决定时开关机时间差不得小于10分钟

1.分析思路 <1>在定时开关机功能上限制开关机时间差在10分钟以内需要考虑到一下情况: 1.开机或关机只有一个被打开,则允许设置 2.开机和关机功能都打开并且均为一次性操作,且时间差大于10,则允许设置 3.开机(关机)一次性,而关机(开机)操作,且时间差大于10,则允许设置 4.重复周天操作,且时间差大于10,则允许设置 <2>在保存设置时间时限制,和打开关闭界面进行限制 2.功能实现 AlarmClock.java private boolean verifyConflict

韩信点兵 相传韩信才智过人,从不直接清点自己军队的人数,只要让士兵先后以三人一排、五人一排、七人一排地变换队形,而他每次只掠一眼队伍的排尾就知道总人数了。输入3个非负整数a,b,c ,表示每种队形排尾的人数(a&lt;3,b&lt;5,c&lt;7),输出总人数的最小值(或报告无解)。已知总人数不小于10,不超过100 。

#include <stdio.h>int main() { int n,a,b,c,i=1,j; scanf("%d %d %d",&a,&b,&c); for(n=10;n<101;n++) { if((n%3==a)&&(n%5==b)&&(n%7==c)) { printf("%d",n); break; } } if(n==101) printf("No answer&qu

华为机试题【10】-求数字基root

题目描述: 求整数的Root:给定正整数,求每位数字之和;如果和不是一位数,则重复; 输入:输入任意一个或多个整数 输出:输出各位数字之和,直到和为个位数为止(输入异常,则返回-1),多行,每行对应一个输入数据的结果. 样例输入: 25 865 样例输出: 7 1 思路分析: 首先求个位数相加,经典方法,求余相除 要求各个位数的和是小于10,可以采用递归或者循环 代码: import java.util.Scanner; public class Main { static int[] num

获取10个1-20之间的随机数,要求不能重复

package cn; import java.util.ArrayList; import java.util.Random; /**  * 获取10个1-20之间的随机数,要求不能重复  *   * 用数组实现,但是数组的长度是固定的,长度不好确定.  * 所以我们使用集合实现.  *   * 分析:  *  1.创建产生随机数的对象  *      2.创建一个存储随机数的集合  *      3.定义统计变量,从0开始,是否小于10  *       是 : 先产生一个随机数,判断该随机

x 的 x 次方等于10,求 x

当 x 的 x 次方为10时,求 x 的值,精确到小数位后9位 过程如下: 2 的 2 次方 小于 10: 3 的 3 次方 大于 10: 因此 x 在 2 到 3 之间. 找出整数部分后,需要计算出小数部分,然后把两部分加到一个串里即可(可以以串的形式输出,也可以转成浮点数输出,下面的程序是以串的形式输出的). 用试探法来做,过程如下: 小数点后第一位,从 0 开始,加在整数部分后面组成一个新数 y,如果 y 的 y 次方小于 10,把 0 去掉,加上 1,...... 依次往下加,直到 y