1.大整数问题
#include <iostream>
using namespace std;
int main()
{
int n;
int sum=0;
cin >> n;
while(n>0){
sum += n%100;
n=n/100;
}
if(sum%11==0)
cout << "该整数能被11整除";
else
cout << "该整数不能被11整除";
}
2.模式匹配问题
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char s[1000] = {'s'};
char t[100] = {'t'};
int next[100] = {0};
cin >> s+1;
cin >> t+1;
int s_len = strlen(s)-1;
int t_len = strlen(t)-1;
int i,j,k;
j = 1;k = 0;
next[j]=0;
while(j < t_len) {
if(k == 0 || t[j] == t[k]) {
j++;
k++;
next[j] = k;
}
else
k = next[k];
}
for(i=1; i<=t_len; i++)
cout <<"next["<<i<<"]="<< next[i] <<endl;
i=0;j=0;
while(i<s_len && j<t_len) {
if(j==0 || s[i] == t[j]) {
i++;
j++;
}
else
j = next[j];
}
if(j>=t_len)
cout << "模式在文本中的位置是"<<i-1<<endl;
else
cout << "匹配失败"<<endl;
}
3.线性规划问题
#include<iostream>
using namespace std;
int main()
{
int x,y,i,j,max=0;
for(i=0; i<=4; i++) {
for(j=0; j<=2; j++) {
if(max < 3*i+5*j) {
if(i+j <= 4 && i+3*j <= 6) {
max = 3*i+5*j;
x = i;
y = j;
}
}
}
}
cout << x << endl;
cout << y << endl;
cout << max << endl;
}
4.变位词问题
#include<iostream>
#include<string.h>
using namespace std;
int main()
{
char s[100];
char t[100];
gets(s);
gets(t);
int i;
int s_count[26] = {0};
int t_count[26] = {0};
for(i=0; i<strlen(s);i++) {
if(s[i] > 32)
s_count[s[i]-97]++;
}
for(i=0; i<strlen(t);i++){
if(t[i] > 32)
t_count[t[i]-97]++;
}
for(i=0; i<26; i++)
if(s_count[i] != t_count[i]) break;
if(i>=26) cout << "是变位词" << endl;
else cout << "不是变位词" << endl;
}