password加密问题

时间:2023-03-08 16:54:05
password加密问题

password加密问题

个人信息:就读于燕大本科软件project专业 眼下大三;

本人博客:google搜索“cqs_2012”就可以;

个人爱好:酷爱数据结构和算法,希望将来从事算法工作为人民作出自己的贡献;

编程语言:C++ ;

编程坏境:Windows 7 专业版 x64;

编程工具:vs2010;

制图工具:office 2010 powerpoint;

硬件信息:7G-3 笔记本;

真言

假设自己没有完毕任务。不是任务的问题,是自己的问题

题目

百练 2818

思路

1 暴力法,计算一次。移动一次

2优化: 计算一次。跟踪一次。再计算,在跟踪;最后在移动

3再优化:计算须要移动的次数,计算终于结果。然后移动

ac代码

#include <iostream>
#include <string>
#include <vector>
using namespace std; bool my_2818(vector<string> * myvector); int main()
{
bool sum = true;
vector<string> * myvector = new vector<string>;
vector<string>::iterator it;
while(sum == true)
sum = my_2818( myvector );
it = myvector->begin();
while(it < myvector->end())
{
cout<<*it<<endl;
it++;
}
system("pause");
return 0;
} bool my_2818(vector<string> * myvector)
{
int n;
cin>>n;
if(n == 0)
{
return false;
}
int * data = new int[n];
int *length = new int[n];
for(int i=0;i<n;i++)
{
cin>>data[i];
length[i] = 0;
} for(int j,i=0;i<n;i++)
{
j = data[i]-1;
length[i]++;
while(true)
{
if(j == i)
break;
j = data[j]-1;
length[i]++;
}
} int k;
string a;
char* b = new char[n];
char c;
while(true)
{
cin>>k;
if(k == 0)
break;
for(int i=0;i<n;i++)
{
b[i] = ' ';
}
getline(cin,a,'\n');
a=a.substr(1,a.length()-1);
while(a.length()<n)
a+=' '; for(int i=0;i<n;i++)
{
int j = k % length[i];
int m = i;
while(j>0)
{
m = data[m]-1;
j--;
}
b[m] = a[i];
}
string result="";
for(int j=0;j < n;j++)
result+=b[j]; myvector->push_back(result);
}
myvector->push_back("");
return true;
}