第一题题意:就是不能回去:
#include<iostream>
using namespace std;
int main()
{
int t;
cin>>t;
while (t--){
int n,ch[1001]={0};
cin>>n;
string str;
cin>>str;
bool flag = true;
ch[str[0]]++;
for (int i=1;i<n;i++){
if (str[i]!=str[i-1]){
if (ch[str[i]]!=0) {
flag = false;
break;
}
else{
ch[str[i]]++;
}
}
}
if (flag == true) cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
}
第二题:找1-n的回文数字有多少个:
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int main()
{
int t;
cin>>t;
while (t--){
int n;
string str;
cin>>n;
int gg = n;
do{
str+=(gg%10+'0');
gg/=10;
}while (gg!=0);
// string str = to_string(n);
int len = str.length();
int sum = 9*(len-1);
int num = 1;
for (int i=1;i<len;i++){
num = num*10+1;
}
int tip = num;
while (1){
if (num>n) break;
else {
num+=tip;
sum++;
}
}
cout<<sum<<endl;
}
}
第三题:方阵,相邻数字不能差1
我感觉我写烦了。
#include<iostream>
using namespace std;
int main()
{
int t;
cin>>t;
while (t--){
int n;
cin>>n;
if (n==2) cout<<-1<<endl;
else{
int ch[10001]={0};
int cou = 1;
for (int i=0;i<n*n;i+=2){
ch[i] = cou;
cou++;
}
for (int i=1;i<n*n;i+=2){
ch[i] = cou;
cou++;
}
cou = 0;
while (1){
if (cou == n*n) break;
for (int i=0;i<n;i++){
cout<<ch[cou]<<" ";
cou++;
}
cout<<endl;
}
}
}
}
原谅本蒻蒻只写出来这三题,第五题DP写法差一点写出来了,/(ㄒoㄒ)/~~