Day41

今天终于拿到还算满意的offer了,马上又要去上班接受新挑战了
以后可能没有时间和耐力保证每天都记录一些东西了,但是这次决定一旦学了新的东西,遇到了新问题,一定要记一下,以免以后再找工作面试官问解决过什么问题依然大脑短路。
为了庆祝,今天再做一道题吧

已知一个整数N,可以组成一个从1到N包含N个数的数组,其中任意位置 i 满足1<= i <= N,如果满足以下条件:
数组中第i位上的数字可以被i整除
或i可以整除数组中第i位上的数字
则称这样的数组为Beautiful Arrangement,求N对应几组这样的数组。

思路:暴力的方法,从1开始依次试探,比如1,2,3,以1开头,下一位肯定不能是1,因为1被访问过了,下一位可以是2,然后设置2为已访问,下一位也不能是3,因为数字3和位置2不满足一方能被另一方整除的条件,然后以1,2为开头,接下来只能是3了,这样1,2,3满足条件,计数加一。接下来以相同的方法试探以2和3开头的情况。

public int count = 0;
public int BeautifulArrangement(int N)
{
    bool[] visited = new bool[N + 1];
    Caculate(N, visited, 1);
    return count;
}
public void Caculate(int N, bool[] visited, int p)
{
    if(p > N)
    {
        count++;          
    }
    for(int i = 1; i <= N; i++)
    {
        if(!visited[i] && (p % i == 0 || i % p == 0))
        {
            visited[i] = true;
            Caculate(N, visited, p+1);
            visited[i] = false;
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
明日问题的输入事件与输出事件为: | Input Events | Node Output Event description Node . e0: start program event 1 e7: Welcome message 2 e1: center a valid month 6e8: print today's date 4 e2: enter an invalid month 67| e9: print tomorrow's date 6 e3: enter a valid day 69 e10: "month OK" 39 e4: enter an invalid day 69 e11: "month out of range" 41 e5: enter a valid year 71 e12: "day OK" 4 e6: enter an invalid year 71 e13: "day out of range" 4S e14: "year OK" 54 e15: "year out of range" 5( e16: "Date OK" 6C e17: "please enter a valid date" 62 e18: "enter a month" 6( e19: "enter a day" 68 e20: "enter a year" 70 c21: "Day is month, day, year" 8S 在下表中,ASF-6对应的输入事件为: 输出事件 ASF-7对应的输入事件为: 输出事件 为:_ ASF-8对应的输入事件为:_, 输出事件 为:_ ASF-9对应的输入事件为:_,输 出事件 为:_ Atomic System Function Inputs Outputs L ASF-1 start program e0 e7 | ASF-2 enter a date with an invalid month, valid day and valid year e2, e3,e5 e11,e12,e14,e17 | ASF-3 enter a date with an invalid day, valid month and validyear| e1, c4,e5 e10,e13,e14,e17 | ASE-4 enter a date wih an ivalid year, valid day and valid monh| el,e3, c6 e10,e12, el5,e17| ASF-5 enter a date with valid month, day, and year e1,e3,e5 . e10, e12, e14, e16, c21 | ASIF-6 enter a date with valid month, day and year invalid ASF-7 enter a date with valid day, month and year invalid ASF-8 enter a date with valid year, day and month invalid ASF-9 enter a date with invalid month, day, year
06-01
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值