校园三键客 2022-05-26 16:08 采纳率: 75%
浏览 48
已结题

恢复密码c++问题求解

题目描述
小A同学设置了n个互不相等的整数,作为自己电脑的密码。
为了防止自己遗忘,他写出一组数作为提示信息,这组数有n-1个数字,其中第i个数是用密码的第i-1位和第i+1位相加得到的。
比如,假设密码为1,3,5,4,2,则提示信息为:4,8,9,6。
请你根据提示信息,计算出小A的密码,如果有多种可能的解,你只需要输出字典码最小的那组解。
全排列指的是:将数字1n全部打乱,这组数必定包含1n的每个数,且不重复。
输入
输入的第一行包含一个整数 N(2≤N≤10),数组中的每个数Ai满足1≤Ai≤2000。
第二行包含 N-1 个空格分隔的整数。
输出
输出一行,包含 N 个空格分隔的整数。
样例
输入
5
4 8 9 6
输出
1 3 5 4 2

#include<bits/stdc++.h>
using namespace std;
int n,a[1001],s[1001],p=1,l=0; 
int main(){
    cin>>n;
    for(int i=1;i<n;i++){
        cin>>a[i];
    }for(int i=1;i<=n;i++){
        for(int j=1;j<=9;j++){
            for(int k=1;k<=9;k++){
                if((j+k)==a[i]&&(i==1||(j+l)==a[i])){
                    s[p]=j;
                    p++;
                    l=k;
                }
            }
        }
    }
    for(int i=1;i<n;i++)cout<<s[i]<<" ";
    cout<<l;
    return 0;
}

  • 写回答

1条回答 默认 最新

  • 校园三键客 2022-05-28 17:15
    关注

    #include<bits/stdc++.h>
    using namespace std;
    int main(){
    int n,a[10010],b[10010];
    cin>>n;
    for(int i=1;i<n;i++)cin>>a[i];
    for(int k=0;k<=a[1];k++){
    int q=k,t=1;
    b[t]=k;
    for(int i=1;i<n;i++){
    q=a[i]-q;
    t++;
    b[t]=q;
    }
    int c[10101];
    bool asdf=false;
    for(int i=1;i<=n;i++){
    c[i]=b[i];
    }sort(c+1,c+n+1);
    for(int i=1;i<=n;i++){
    if(c[i]!=i)asdf=true;
    }
    if(!asdf){
    for(int i=1;i<=n;i++)cout<<b[i]<<" ";
    exit(0);
    }
    }
    return 0;
    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 6月5日
  • 已采纳回答 5月28日
  • 创建了问题 5月26日

悬赏问题

  • ¥15 孟德尔随机化结果不一致
  • ¥15 深度学习残差模块模型
  • ¥50 怎么判断同步时序逻辑电路和异步时序逻辑电路
  • ¥15 差动电流二次谐波的含量Matlab计算
  • ¥15 Can/caned 总线错误问题,错误显示控制器要发1,结果总线检测到0
  • ¥15 C#如何调用串口数据
  • ¥15 MATLAB与单片机串口通信
  • ¥15 L76k模块的GPS的使用
  • ¥15 请帮我看一看数电项目如何设计
  • ¥23 (标签-bug|关键词-密码错误加密)